LeetCode之Single Numbe

2014-11-24 02:59:15 · 作者: · 浏览: 1

【题目】

\

【解析】

在此我们利用异或的一个性质:

任何一个数字异或他自己都等于0。也就是说我们从头到尾异或数组中的每一个数字,

那么最终的结果刚好是哪个只出现一次的数字,因为那些成对出现的数字全部在异或中抵消了。< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPGgzPqG+tPrC66G/PC9oMz4KPHA+PHByZSBjbGFzcz0="brush:java;">class Solution { public: int singleNumber(int A[], int n) { int i,result = 0; if(A == NULL || n <= 0){ return -1; } for(i = 0;i < n;i++){ result ^= A[i]; } return result; } };

/*********************************
*   日期:2013-12-04
*   作者:SJF0115
*   题号: 题目: Single Number
*   来源:http://oj.leetcode.com/problems/single-number/
*   结果:AC
*   来源:LeetCode
*   总结:
**********************************/
#include 
  
   
#include 
   
     #include 
    
      using namespace std; int *array; int singleNumber(int A[], int n) { int i,result = 0; if(A == NULL || n <= 0){ return -1; } for(i = 0;i < n;i++){ result ^= A[i]; } return result; } int main() { int i,n; while(scanf("%d",&n) != EOF){ array = (int*)malloc(sizeof(int)*n); for(i = 0;i < n;i++){ scanf("%d",&array[i]); } printf("%d\n",singleNumber(array,n)); }//while return 0; }