数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。在O(n)时间内完成

题目:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。在O(n)时间内完成
示例 1:输入:[3,0,1] 输出:2
示例 2:输入:[9,6,4,2,3,5,7,0,1] 输出:8
public int missingNumber(int[] nums) {
        //运用异或 : 0^0=0; 0^1=1; 1^1=0; a^b^b=a;
        int data = 0;
        for (int i = 0; i < nums.length; ++i) {
            //先用0异或0~nums.length的下标
            data ^= i;
            //再异或元素,一个数字出现两次,异或后为0,而异或最终的结果值为出现一次的数,即为缺失的元素
            data ^= nums[i];
        }
        data ^= nums.length;
        return data;

    }
 
posted @ 2020-03-12 16:43  千堆雪  阅读(1391)  评论(0编辑  收藏  举报