出自 leetcode 287,
給定乙個包含 n + 1 個整數的陣列 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。
示例 1:
輸入: [1,3,4,2,2]
輸出: 2
示例 2:
輸入: [3,1,3,4,2]
輸出: 3
我想到一種和標準答案思路不同,且符合 題目要求的方法,即 o(n)時間, o(1)空間的方法, 統計位的出現頻率即可, 如果某個位上 1 的數量超過了 1-n中這個位上1的所有出現次數,那麼說明重複的數在這個位上為1
全部**如下:
#include
"haithink_common.h"
intfindduplicate
(vector<
int>
& nums)
}int cnt2 =0;
for(
int j =
0; j < len; j++)}
if(cnt2 > cnt)
}return res;
}int
main()
;//std::sort(nums.begin(), nums.end());
output
(nums)
;output
(findduplicate
(nums));
return0;
}
尋找重複數
leetcode演算法 題目 1.二分查詢 注意題目中的整數範圍1 len 1 假設陣列中的元素已經排好了順序 如果小於等於mid的個數大於mid的值,說明目標值在1 mid中間 如果小於等於mid的個數小於mid的值,說明目標值在mid right中間 class solution return ...
尋找重複數
給定乙個包含 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...
LeetCode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重...