题目:
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
leetcode原题链接
思路:
哈希表
- 创建字典对象record
key值为nums中的数字
value值对应 该数字在nums数组中出现的次数 - 遍历完nums数组后,返回字典record中value为1 对应的key值
方法一:使用index()方法
方法二:直接for循环遍历查找
代码:
方法一
class Solution:
def singleNumber(self, nums: List[int]) -> int:
record={}
for i in nums:
if i in record:#此后若遍历到,对应的value值+1
record[i]+=1
else:#第一次遍历到i值,记录value值【出现的次数】为1
record[i]=1
return list(record.keys())[list(record.values()).index(1)]
方法二(执行用时更少…)
class Solution:
def singleNumber(self, nums: List[int]) -> int:
record={}
for i in nums:
if i in record:
record[i]+=1
else:
record[i]=1
for i in record:
if record[i]==1:
return i
后面是报错/其他代码,仅记录,无参考意义
报错
class Solution:
def singleNumber(self, nums: List[int]) -> int:
record=[]
for i in nums:
if i in record:
nums.remove(i)
else:
record.append(i)
return nums[0]
虽然用python的count()方法可以解决问题,但最好不要采取
class Solution:
def singleNumber(self, nums: List[int]) -> int:
for i in nums:
if nums.count(i)==1:
return i