题目
一个整型数组 nums
里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
示例 1:
输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1]
示例 2:
输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2]
限制:
2 <= nums <= 10000
思路
我的思路是先进行一次排序,在比较数组首尾是否与他们的后一个或者前一个相同,如果不同,就存入我要输出的数组中,最后再对判断数组的中间进行判断,判断该数字与前一个和后一个数是否相同,如果不同,则存入要输出的数组中,在这之中要判断要输出的数组长度是否为2,如果是2则输出了,因为题中明确给出条件是除两个数之外
代码
class Solution:
def singleNumbers(self, nums: List[int]) -> List[int]:
a=[]
nums.sort()
l=len(nums)
if nums[0]!=nums[1]:
a.append(nums[0])
if nums[l-1]!=nums[l-2]:
a.append(nums[l-1])
for i in range(1,l-1):
if len(a)==2:
return a
if nums[i]!=nums[i-1] and nums[i]!=nums[i+1]:
a.append(nums[i])
return a