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