給定一個包含 0, 1, 2, ..., n?中?n?個數的序列,找出 0 .. n?中沒有出現在序列中的那個數。
示例 1:
輸入: [3,0,1]
輸出: 2
示例?2:
輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8
說明:
你的算法應具有線性時間復雜度。你能否僅使用額外常數空間來實現?
眾所周知,0和x異或等于x本身,x和x異或等于0,并且異或滿足交換律。
所以把1-n異或一遍,把所有數也異或一遍,剩下的數字就是缺的。
class Solution {public int missingNumber(int[] nums) {int missing = nums.length;for (int i = 0; i < nums.length; i++) {missing ^= i ^ nums[i];}return missing;}
}
?