(数组与矩阵) 剑指 Offer 03. 数组中重复的数字 ——【Leetcode每日一题】

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

难度:简单

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入

2, 3, 1, 0, 2, 5, 3

输出:2 或 3

限制

2 < = n < = 100000 2 <= n <= 100000 2<=n<=100000

💡思路:

由于nums中所有的数字都在 0 ~ n-1中,所以可以定义一个长度为 n 的数组cnt:

  • 初始化 cnt0;
  • 遍历 nums
    • cnt[nums[i]]等于0,则 +1;
    • cnt[nums[i]]等于1,则找到重复的数为 nums[i]

🍁代码:(C++、Java)

C++

cpp 复制代码
class Solution {
public:
    int findRepeatNumber(vector<int>& nums) {
        vector<int> cnt(nums.size());
        for(int num : nums){
            if(cnt[num] == 0) cnt[num]++;
            else return num;
        }
        return -1;
    }
};

Java

java 复制代码
class Solution {
    public int findRepeatNumber(int[] nums) {
        int[] cnt = new int[nums.length];
        for(int num : nums){
            if(cnt[num] == 0) cnt[num]++;
            else return num;
        }
        return -1;
    }
}

🚀 运行结果:

🕔 复杂度分析:

  • 时间复杂度 : O ( n ) O(n) O(n),其中 n 为数组 nums 的长度。
  • 空间复杂度 : O ( n ) O(n) O(n)。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN---力扣专栏,每日更新!

注: 如有不足,欢迎指正!

相关推荐
Xzaveir_77719 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
闪电悠米21 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
过期动态1 天前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
Adios7941 天前
设置交集大小至少为2
数据结构·算法·leetcode
yurenshi16682 天前
20 账号以内矩阵怎么选?聚媒通、融媒宝、新榜小豆芽、矩阵通功能、价格实测对比
线性代数·矩阵
程序猿乐锅2 天前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
yurenshi16682 天前
自媒体矩阵防封号工具测评:聚媒通 IP 隔离版对比融媒宝、新榜两款工具优劣
tcp/ip·矩阵·媒体
yurenshi16682 天前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
hold?fish:palm2 天前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle2 天前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法