码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode136 Single Number

时间:2015-07-11 11:54:07      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:

题意:数组中每个数字都出现了两次,只有一个出现一次,找出这个数

思路:很明显不能从头到位遍历来找,首先是超时的原因,再次就是这样很没意思·····但是却没想到什么好办法,因为不了解按位异或(XOR)。异或就是相同的两个数结果为0,不同的为1。根据交换律我们知道,数组中两两异或的结果就剩最后那一个落单的数了,因为两个相同的数异或结果为0。所以其实这题就很简单了,只是如果没想到或者根本不知道异或就无法好好解题了。

代码:

int singleNumber(vector<int>& nums) {
        int ans = 0;
        for(int n : nums)
        {
            ans ^= n;
        }
        return ans;
    }

 

leetcode136 Single Number

标签:

原文地址:http://www.cnblogs.com/puyangsky/p/4638234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!