NC305. 寻找唯一重复数
描述
示例1
输入:
[4,2,1,3,3]
输出:
3
示例2
输入:
[1,2,3,4,5,6,7,8,9,9]
输出:
9
C++ 解法, 执行用时: 21ms, 内存消耗: 3264KB, 提交时间: 2022-06-30
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findRepeatNum(vector<int>& nums) { // write code here vector<int>count(nums.size(), 0); for(auto n : nums){ if(count[n] == 1) return n; else count[n] ++; } return 0; } };
C++ 解法, 执行用时: 21ms, 内存消耗: 3268KB, 提交时间: 2022-04-03
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findRepeatNum(vector<int>& nums) { // write code here int l=0,r=nums.size()-1; int ans=2; while(l<=r) { int m=(l+r)/2; int cnt=0; for(int i=0;i<nums.size();i++) if(nums[i]<=m) cnt++; if(cnt<=m) l=m+1; else { r=m-1; ans=m; } } return ans; } };
C++ 解法, 执行用时: 21ms, 内存消耗: 3272KB, 提交时间: 2022-06-09
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findRepeatNum(vector<int>& nums) { // write code here int l=0,r=nums.size()-1; int res=2; while(l<=r){ int m=(l+r)/2; int c=0; for(int i=0;i<nums.size();i++){ if(nums[i]<=m){ c++; } } if(c<=m) l=m+1; else{ r=m-1; res=m; } } return res; } };
C++ 解法, 执行用时: 23ms, 内存消耗: 3264KB, 提交时间: 2022-03-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findRepeatNum(vector<int>& nums) { int slow = 0, fast = 0; do { slow = nums[slow]; fast = nums[nums[fast]]; } while (slow != fast); slow = 0; while (slow != fast) { slow = nums[slow]; fast = nums[fast]; } return slow; } };
C++ 解法, 执行用时: 23ms, 内存消耗: 3268KB, 提交时间: 2022-03-05
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findRepeatNum(vector<int>& nums) { // write code here int n = nums.size(); int slow = 0, fast = 0; do { slow = nums[slow]; fast = nums[fast]; fast = nums[fast]; }while(slow != fast); slow = 0; while(slow != fast) { slow = nums[slow]; fast = nums[fast]; } return slow; } };