首页 > 技术文章 > 算法

cjjjj 2020-03-04 00:18 原文

1. 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

class Solution {
    public int missingNumber(int[] nums) {
        int temp = 0;
        for(int i = 0;i < nums.length;i++){
            temp = temp ^ (i + 1) ^ (nums[i]);
        }
        return temp;
    }

运用位运算来完成,思路为temp ^ nums[ i ] ^ (i + 1),这里的temp值从0开始,因为nums 的值是从0开始,而(i + 1)则是为了取到自然数1,2,3,4,5...等

运算规则如下:

假如目标数组nums 值 为 0,1,2,4

自然数对应为1, 2,3,4

0 ^ 1 ^ 0 = 1

1 ^ 2 ^ 1 = 2

2 ^ 3 ^ 2 = 3

3 ^ 4 ^ 4 = 3

————————————————
版权声明:本文为CSDN博主「Light丶Long」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lin140611/article/details/89979742

 

推荐阅读