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

Single Number (15)

时间:2014-11-13 16:03:20      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   sp   for   strong   数据   

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? 

怎么解决这个问题?我们要利用计算机内部用二进制数来储存数据这一特性。试想一个数本身和自己异或的结果必定是0.因为数组中除了一个数之外,其他的数都出现了两次,只要把数组中所有的数都异或一遍,最后剩余的结果必定是那个特别的数字。刚开始的时候应该选取0和数组中第一个数以后,因为0的二进制表示是全零,不会对最后求得的结果有影响。据此,就能很容易地得出正确的代码:

 1 class Solution {
 2 public:
 3     int singleNumber(int A[], int n) {
 4         int i;
 5         int x=0;
 6         for(i=0;i<n;i++)
 7             x^=A[i];
 8         return x;
 9     }
10 };

 

Single Number (15)

标签:style   blog   io   color   ar   sp   for   strong   数据   

原文地址:http://www.cnblogs.com/zhoudayang/p/4094856.html

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