切換
舊版
前往
大廳
主題

LeetCode - 268. Missing Number 解題心得

Not In My Back Yard | 2020-09-26 00:21:40 | 巴幣 2 | 人氣 145

題目連結:


題目意譯:
給定一個從數列 0, 1, 2, ..., n 取出 n 個相異數字所形成的陣列,找到數列中沒被取的那個數字。

注:
你的演算法應為線性時間複雜度。你可以只使用常數空間將其實作嗎?



範例測資:
範例 1:
輸入: [3,0,1]
輸出:2

範例 2:
輸入:[9,6,4,2,3,5,7,0,1]
輸出:8


解題思維:
可以看到 0 ~ n 這個數列的總和應為
n × (n + 1) ÷ 2
因此,我們就直接掃過陣列一次,求出陣列的數字總和並且看裡面有沒有 0 這一項的存在。

如果沒有 0 ,則代表缺失的數字就是 0 ;反之,如果陣列總和 = n × (n - 1) ÷ 2 ,則代表遺失的是 n 這個數字;如果不是前面兩者,則代表缺少的是中間的數字,即 n × (n + 1) ÷ 2 減去陣列總和。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作