給定一個包含 0, 1, 2, ..., n
中 n 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。
示例 1:
輸入: [3,0,1] 輸出: 2
示例 2:
輸入: [9,6,4,2,3,5,7,0,1] 輸出: 8
說明:
你的算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?
Review:
O(n)複雜度,常數級空間
我們可以遍歷數組,讓數組中的數和i抵消,沒有抵消掉的爲缺失的數
Code:
class Solution {
public int missingNumber(final int[] nums) {
int res = 0, len = nums.length;
for (int i = 0; i < len; i++) {
res = res + i - nums[i];
}
return res + len;
}
}
我是用 + - 來進行抵消操作的,看了題解,覺得^異或的方式更好