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

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


问题描述

在这里插入图片描述

简要思路

第一反应是直接嵌套for循环就出来了。但是为了控制时间复杂度,使用两个单独的for循环,将时间复杂度由O(n2)降至O(n) 。
实现使用一个数组存储nums中每一个数字出现的次数,然后遍历a数组,只要找到一个出现次数大于1的,就将该数字输出。

代码

class Solution {
    
    
public:
    int findRepeatNumber(vector<int>& nums) {
    
    
        int n = nums.size();
        vector<int> a(n,0);
        for(int i=0; i<n; i++){
    
    
            a[nums[i]] ++;
        }

        for(int i=0; i<n; i++){
    
    
            if(a[i] > 1) return i;
        }
        return -1;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_45438600/article/details/116451341