首页 > 其他 > 详细

Single Number

时间:2014-02-27 14:45:25      阅读:485      评论:0      收藏:0      [点我收藏+]

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

 

分析:给出一组数组,每个元素都出现两次,只有一个元素只出现一次。要求不需要额外的存储空间,时间复杂度是O(n)。我们想到一个性质:任何一个数字与自己异或的结果都为0,故可以想到数组中一个元素出现两次,只有一个出现一次。我们可以使用异或的思想来解决这题。例如{a,b,c,a,b,c,d}使用中间变量Temp,可以得出下面公式Temp=Temp^a^b^c^a^b^c^d=Temp^(a^a)^(b^b)^(c^c)^d=Temp^d.

代码实现如下:

bubuko.com,布布扣
class Solution {
public:
    int singleNumber(int A[], int n) {
        int result=0;
        for(int i=0;i<n;++i)
        {
            result^=A[i];
        }
        return result;
    }
};
bubuko.com,布布扣

python实现的道理也一样:最近在看python,忍不住用python写了一下,练练手。

bubuko.com,布布扣
class Solution:
    # @param A, a list of integer
    # @return an integer
    def singleNumber(self, A):
        result=0
        for a in A:
            result^=a
        return result
bubuko.com,布布扣

Single Number,布布扣,bubuko.com

Single Number

原文:http://www.cnblogs.com/awy-blog/p/3569756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!