您的位置:首页 > 其它

LeetCode:Single Number

2015-06-24 19:49 375 查看


Single Number

 Total Accepted: 74470 Total
Submissions: 165136My Submissions

Question
 Solution 

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?

Hide Tags
 Hash Table Bit
Manipulation

这个题的标准做法是利用异或运算的这两个法则:

  1. a ^ b = b ^ a

  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;

  举个例子:

  1^2^3^4^4^3^2的结果是啥呢?

  一眼大概开不出来

  根据上面两个法则,改变一下顺序吧

  改成2^2^3^3^4^4^1

  现在,结果一目了然了吧~

  显然是1呗。

  有了上面的例子,这道题就简单多了
public class Solution {
  public int singleNumber(int[] A) {
      int result = A[0];
      for(int i = 1; i < A.length; i++){
      result = result ^ A[i];
      }
      return result;
  }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode