給定乙個包含 n + 1 個整數的陣列 nums ,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。
假設 nums 只有 乙個重複的整數 ,找出 這個重複的數 。
示例 1:
輸入:nums = [1,3,4,2,2]
輸出:2
示例 2:
輸入:nums = [3,1,3,4,2]
輸出:3
示例 3:
輸入:nums = [1,1]
輸出:1
示例 4:
輸入:nums = [1,1,2]
輸出:1
高階:2 <= n <= 3 * 104
nums.length == n + 1
1 <= nums[i] <= n
nums 中 只有乙個整數 出現 兩次或多次 ,其餘整數均只出現 一次
不斷更新答案所在區間。時間複雜度為nlong(n).額外空間為o(1).如何證明 nums 中至少存在乙個重複的數字?
你可以在不修改陣列 nums 的情況下解決這個問題嗎?
你可以只用常量級 o(1) 的額外空間解決這個問題嗎?
你可以設計乙個時間複雜度小於 o(n2) 的解決方案嗎?
class
solution
return sum > y - x +1;
}int
findduplicate
(vector<
int>
& nums)
return ans;}}
;
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之...