python_lintcode_82落单的数_83落单的数 II_84落单的数 III
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 hereif A==[]:return 0A.sort()j=0for i in range(len(A)):#偶数if i==0 or i%2==0:j=A[i]else:if A[i]!=j:return jreturn 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 hereif A==[]:return 0A.sort()j=0k=0for i in range(len(A)):if k==0 or k%3==0:j=A[i]else:if A[i]!=j:return jk+=1return 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 hereif A==[]:return 0A.sort()j=0B=[]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 BB.append(A[-1])return B
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
