給定乙個包含 n + 1 個整數的陣列 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。
示例 1:
輸入:[1
,3,4
,2,2
]輸出:
2
示例 2:
輸入:[3
,1,3
,4,2
]輸出:
3
說明:
首先明確,只有乙個數字出現了多次。
我們只要把每個元素放到對應的位置就行了,舉例來說就是,將2放到nums[1]位置,將5放到nums[4]位置(因為陣列下標從0開始)。
如果當前位置i的元素恰好等於i+1,表示該位置已經被正確放置;
如果不等於:通過while迴圈,不斷交換元素,直到位置i的元素是i+1。
如果在將5交換到nums[4]的過程中發現,nums[4]上面的值已經是5了,表示當前的這個5是重複出現的,因此返回即可。
(這個解法不符合題意,修改了原陣列。。。)
class
solution
}return-1
;}};
LeetCode 287 尋找重複數
參考 給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只...
LeetCode 287(尋找重複數)
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只能使用...
leetcode287 尋找重複數
1.二分查詢 參考 可以認為有兩個陣列,乙個是原陣列,乙個是1 n的範圍陣列 無重複 每次對low high的範圍陣列做二分,取中間數mid,然後去原陣列中統計小於等於mid的數目,如果大於mid 如果無重複,那麼應該小於等於mid 說明重複的那個數字在1 mid之間,結合範圍即在 low mid之...