leetcode_260. Single Number III 数组中找出两个只出现一次的元素
2016-11-12 21:27
302 查看
题目:
Given an array of numbers
the other elements appear exactly twice. Find the two elements that appear only once.
For example:
Given
Note:
The order of the result is not important. So in the above example,
also correct.
Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?
题意:
给定数组nums,其中只有两个元素出现一次,其他元素都出现两次,写一个函数,找出这两个只出现一次的元素。
要求用线性时间复杂度,同时只使用常数个空间单元。
代码:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
n = len(nums)
if n <= 2 :
return nums
else :
nums.sort() #对nums排序
count = 0 #记录出现一次的元素个数
res = [] #存储出现一次的元素
i = 0
while i < n-1 :
if nums[i] == nums[i+1] :
i += 2
else :
res.append(nums[i])
count += 1
i += 1
if count == 2 :
return res
res.append(nums[n-1]) #如果此时还没有返回,说明另一个只出现一次的元素在数组的最后一个位置
return res
笔记:
表示时间复杂度不符合要求,但是该方法的运行时间真是挺快的
网上查看了其他大神的算法,大多是用按位异或运算,然后根据异或结果反推出两个只出现一次的元素的。
Given an array of numbers
nums, in which exactly two elements appear only once and all
the other elements appear exactly twice. Find the two elements that appear only once.
For example:
Given
nums = [1, 2, 1, 3, 2, 5], return
[3, 5].
Note:
The order of the result is not important. So in the above example,
[5, 3]is
also correct.
Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?
题意:
给定数组nums,其中只有两个元素出现一次,其他元素都出现两次,写一个函数,找出这两个只出现一次的元素。
要求用线性时间复杂度,同时只使用常数个空间单元。
代码:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
n = len(nums)
if n <= 2 :
return nums
else :
nums.sort() #对nums排序
count = 0 #记录出现一次的元素个数
res = [] #存储出现一次的元素
i = 0
while i < n-1 :
if nums[i] == nums[i+1] :
i += 2
else :
res.append(nums[i])
count += 1
i += 1
if count == 2 :
return res
res.append(nums[n-1]) #如果此时还没有返回,说明另一个只出现一次的元素在数组的最后一个位置
return res
笔记:
表示时间复杂度不符合要求,但是该方法的运行时间真是挺快的
网上查看了其他大神的算法,大多是用按位异或运算,然后根据异或结果反推出两个只出现一次的元素的。
相关文章推荐
- Leetcode260. 找出数组中只出现一次的两个元素
- leetcode-singleNum2 找出一个数组中只出现过一次的元素
- 一个数组有除了两个元素只出现一次,其他元素全部都出现了两次,请找出只出现一次的两个元素,并输出
- Leetcode540. 二分查找找出数组中只出现一次的元素
- 一个整型数组里除了两个数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 【算法14】找出数组中两个只出现一次的数字
- 解题笔记(24)——找出数组中两个只出现一次的数字(数组)
- 程序员面试题精选100题(34)-找出数组中两个只出现一次的数字
- 【转帖】找出数组中两个只出现一次的数字
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 【每日面试题】找出数组中两个只出现一次的数字
- 面试题_找出数组中两个只出现一次的数字
- (34)-[转载] 程序员面试题精选100题 -找出数组中两个只出现一次的数字
- 算法题6 找出整数数组中两个只出现一次的数字
- 100题_34 找出数组中两个只出现一次的数字
- 程序员面试100题之三十四,找出数组中两个只出现一次的数字
- 程序员面试题精选100题(34)-找出数组中两个只出现一次的数字