給定乙個包含0, 1, 2, ..., n
中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。
示例 1:
輸入: [3,0,1]
輸出: 2
示例 2:
輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8
說明:
你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?
將原陣列看作乙個「bitmap」
:
第一次遍歷,將num[i]
放到第i
個位置上(除了n之外);
第二次遍歷,判斷map
後的陣列,各個位置上的元素是否和下標相同,若不對應,則返回該下標(即缺失的數字)。
class
solution
else
}for
(i =
0; i < n; i++
)return n;
}private
void
swap
(int
nums,
int i,
int j)
}
時間複雜度:o(n
)o(n)
o(n)
;空間複雜度:o(1
)o(1)
o(1)
。除了缺失的那個數字,其餘數字和序列索引是成對出現的。
class
solution
return res ^ nums.length;
}}
時間複雜度:o(n
)o(n)
o(n)
;空間複雜度:o(1
)o(1)
o(1)
。
leetcode 163 缺失的區間
給定乙個排序的整數陣列 nums 其中元素的範圍在 閉區間 lower,upper 當中,返回不包含在陣列中的缺失區間。示例 輸入 nums 0,1,3,50,75 lower 0 和 upper 99,輸出 2 4 49 51 74 76 99 class solution else if num...
LeetCode 163 缺失的區間
給定乙個排序的整數陣列 nums 其中元素的範圍在 閉區間 lower,upper 當中,返回不包含在陣列中的缺失區間。示例 輸入 nums 0 1,3 50,75 lower 0 和 upper 99,輸出 2 4 49 51 74 76 99 class solution if l upper ...
leetcode 163缺失的空間
給定乙個排序的整數陣列 nums 其中元素的範圍在 閉區間 lower,upper 當中,返回不包含在陣列中的缺失區間。示例 輸入 nums 0,1,3,50,75 lower 0 和 upper 99,輸出 2 4 49 51 74 76 99 char findmissingranges int...