Under my umbrella.

SKII

Less is more.

力扣题解 136th 只出现一次的数字

136th 只出现一次的数字

  • 先排序后处理数据

    class Solution {
        public int singleNumber(int[] nums) {
            Arrays.sort(nums);
            boolean flag = false;
            int ans = 0;
            for(int i = 0; i < nums.length; i++) {
                if(i+1 == nums.length) {
                    ans = nums[i];
                    break;
                }
                if(nums[i] == nums[i+1]) {
                    i++;
                    continue;
                }
                ans = nums[i];
                break;
            }
    
            return ans;
        }
    }
    
  • 使用异或运算

    异或运算有以下三个性质。

    • 任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a a⊕0=a。

    • 任何数和其自身做异或运算,结果是 00,即 a⊕a=0 a⊕a=0。

    • 异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b

      , a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。

    class Solution {
        public int singleNumber(int[] nums) {
            int ans = 0;
            for(int i = 0; i < nums.length; i++) {
                ans ^= nums[i];
            }
            return ans;
        }
    }
    
posted @ 2020-07-03 09:10  NLYang  阅读(110)  评论(0编辑  收藏  举报