leetcode_137 只出现一次的数字 II

66 阅读1分钟

核心代码

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        return (3 * sum(set(nums)) - sum(nums))//2

另一解法

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        from collections import defaultdict
        record = defaultdict(int)
        for i,x in enumerate(nums):
            record[x] += 1
        for key,val in record.items():
            if val == 1:
                return key

image.png

解题思路:第一种解法:我们使用 3 * set(nums) 这个是将所有的数据都变成了3个,和sum(nums)做减法的话,留下的就是那个单独数字的两倍,所以最后在除以2即可;第二种解法:我们使用字典的形式对数据的个数进行统计,最后遍历字典,拿到那个次数为1的数字就是只出现了一次的数字.