1、题目描述
https://leetcode-cn.com/problems/single-number/
给定一个 非空 整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1] 输出: 1
示例 2:
输入: [4,1,2,1,2] 输出: 4
2、代码详解
方法:列表操作
- 遍历 nums 中的每一个元素
- 如果某个 nums 中的数字是新出现的,则将它添加到列表中
- 如果某个数字已经在列表中,删除它
class Solution:
def singleNumber(self, nums: List[int]) -> int:
once = []
for i in nums:
if i not in once:
once.append(i)
else:
once.remove(i)
return once.pop()
时间O(n^2),空间O(n)
其他解法:哈希表、位操作(异或)
相关题:137
https://leetcode-cn.com/problems/single-number-ii/
相关题:260
https://leetcode-cn.com/problems/single-number-iii/