LeetCode137,解法一python

问题遇到的现象和发生背景

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

问题相关代码,请勿粘贴截图

接下来的代码是正确答案

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        freq = collections.Counter(nums)
        return [num for num, occ in freq.items() if occ == 1][0]

运行结果及报错内容

img

我的解答思路和尝试过的方法

如果最后返回值不加[0],就出现返回的是一个列表,如上图所示
第一个[num for num, occ in freq.items() if occ == 1]中的意思是
for num, occ in freq.items():
if occ==1:
return num
是这样吗
还有就是为啥要加[0]


class Solution:

    def singleNumber(self, nums: List[int]) -> int:

        freq = collections.Counter(nums)#这个会返回一个元素和出现次数的字典

        return [num for num, occ in freq.items() if occ == 1][0]#列表生成式
#列表生成式相当于
res=[]
for num, occ in freq.items():
  if  occ==1:
      res.append(num)