LeetCode 尋找重複數

2021-09-23 17:06:35 字數 968 閱讀 5592

給定乙個包含 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 knuth24小時才解出來。並且我只見過乙個人(注: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 說明 不能更改原陣列 假設陣列是唯讀的...