給定乙個包含 n + 1 個整數的陣列 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。
示例 1:
輸入:[1,3,4,2,2]
輸出:2
示例 2:
輸入:[3,1,3,4,2]輸出:3說明:
不能更改原陣列(假設陣列是唯讀的)。
只能使用額外的 o(1) 的空間。
時間複雜度小於 o(n2) 。
陣列中只有乙個重複的數字,但它可能不止重複出現一次。
這道題比較好做哈哈哈,主要思路就是新建乙個陣列來儲存每乙個數出現的次數,這樣可以做到線性時間內找到出現的重複數,題目要求只有乙個重複數,所以減少了很多難度,下面給出ac**:
class solution ;
for(int i=0;i=2)
}return res;
}};
看了一下討論,發現學到了很多東西,下面我把討論的內容複製貼上在這裡供學習使用
【筆記】這道題(據說)花費了計算機科學界的傳奇人物don knuth
24小時才解出來。並且我只見過乙個人(注:keith amling
)用更短時間解出此題。
快慢指標,乙個時間複雜度為o(n)
的演算法。
舉個例子:nums = [2,5, 9 ,6,9,3,8, 9 ,7,1]
,構造成煉表就是:2->[9]->1->5->3->6->8->7->[9]
,也就是在[9]
處迴圈。
LeetCode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重...
leetcode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只能使用...
LeetCode 尋找重複數
題目 給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2 示例 2 輸入 3,1,3,4,2 輸出 3 說明 不能更改原陣列 假設陣列是唯讀的...