首页 > 其他分享 >剑指 Offer 03. 数组中重复的数字

剑指 Offer 03. 数组中重复的数字

时间:2022-10-07 23:24:41浏览次数:79  
标签:03 return nums int Offer 重复 数组

力扣链接:剑指 Offer 03. 数组中重复的数字

acwing链接

最初的思路是,将所有数据放入桶中,数据存在,数据桶值就++,有数据重复就retrun nums[i],无数据重复就return -1,且需要考虑优先输出-1,其次才是重复值nums[i],因此我最初在acwing上的代码为:

class Solution {
public:
    int duplicateInArray(vector<int>& nums) {
        int a[1005]={0};
        for(int i=0;i<nums.size();i++)
        {
            a[nums[i]]++;
            if(nums[i] > nums.size() || nums[i] < 0 )return -1;
        }
        for(int i=0;i<nums.size();i++)
        {
            if(a[ nums[i] ] >= 2)return nums[i];
        }
        return -1;
    }
};

这样写思路确实正确,并且考虑了优先让a[nums[i]]自增完,再去判断是否有重
而leetcode的数据就有点水了,不需要考虑优先级,同时进行都能过,太离谱了

class Solution {
public:
    int findRepeatNumber(vector<int>& nums) {
        int a[100005]={0};
        for(int i=0;i<nums.size();i++)
        {
            a[nums[i]]++;
            if(a[ nums[i] ] >= 2)return nums[i];
        }
        return -1;
    }
};

这里不得不说一下y总的做法,确实巧妙


标签:03,return,nums,int,Offer,重复,数组
From: https://www.cnblogs.com/lxl-233/p/16767484.html

相关文章