136. Single Number
Easy
6346205Add to ListShare
Given a non-empty array of integers nums
, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra space.
Example 1:
Input: nums = [2,2,1]
Output: 1
Example 2:
Input: nums = [4,1,2,1,2]
Output: 4
Example 3:
Input: nums = [1]
Output: 1
Constraints:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
- Each element in the array appears twice except for one element which appears only once.
from collections import defaultdict
class Solution:
def singleNumber(self, nums: List[int]) -> int:
"""
解题思路:map存出现次数,遍历2次,第一次记录次数,第二次找出次数为1的值
时间复杂度:O(n),空间复杂度:O(n)
"""
# if len(nums) == 1:
# return nums[0]
# times = dict()
# for num in nums:
# if times.__contains__(num):
# times[num] += 1
# else:
# times[num] = 1
# for num in nums:
# if times[num] == 1:
# return num
hash_table = defaultdict(int)
for i in nums:
hash_table[i] += 1
for i in hash_table:
if hash_table[i] == 1:
return i
更优解法参考:https://leetcode.com/problems/single-number/solution/