82落单的数
题目
http://www.lintcode.com/zh-cn/problem/single-number/
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例
给出 [1,2,2,1,3,4,3],返回 4
思路
- sort()进行升序,下标为偶数为新的比较值j,下标为奇数的与前一个数即j进行比较,下同,则j=下一个偶数,否则,return 奇数的前一个
- 最后,还有一种可能就是落单的数是最后一个数。o(n)
代码
class Solution:
"""
@param: A: An integer array
@return: An integer
"""
def singleNumber(self, A):
# write your code here
if A==[]:return 0
A.sort()
j=0
for i in range(len(A)):
#偶数
if i==0 or i%2==0:
j=A[i]
else:
if A[i]!=j:
return j
return A[-1]
83落单的数 II
题目
http://www.lintcode.com/zh-cn/problem/single-number-ii/
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
样例
给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
代码
class Solution:
"""
@param: A: An integer array
@return: An integer
"""
def singleNumberII(self, A):
# write your code here
if A==[]:return 0
A.sort()
j=0
k=0
for i in range(len(A)):
if k==0 or k%3==0:
j=A[i]
else:
if A[i]!=j:
return j
k+=1
return A[-1]
84落单的数 III
题目
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。
您在真实的面试中是否遇到过这个题? Yes
样例
给出 [1,2,2,3,4,4,5,3],返回 1和5
代码
class Solution:
"""
@param: A: An integer array
@return: An integer array
"""
def singleNumberIII(self, A):
# write your code here
if A==[]:return 0
A.sort()
j=0
B=[]
for i in range(len(A)):
#偶数
if i==0 or (i+len(B))%2==0:
j=A[i]
else:
if A[i]!=j:
B.append(j)
j=A[i]
if len(B)==2:
return B
B.append(A[-1])
return B