Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >剑指 Offer 03. 数组中重复的数字

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

作者头像
Zoctopus
发布于 2022-05-10 12:54:14
发布于 2022-05-10 12:54:14
19600
代码可运行
举报
运行总次数:0
代码可运行

今天开始争取每天更新至少一道《剑指offer》的题解

题目

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

找出数组中重复的数字。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:23 

限制:
2 <= n <= 100000

题解

难度为简单。

解法一:循环+Map

一次遍历,将扫描到数字做判断,如果可以在map中查到,就添加进去,否则返回这个数字,因为这个数字已经在map里存在了,属于重复数字。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Go
func findRepeatNumber(nums []int) int {
    var nummap = make(map[int]bool)
    for _,num := range nums {
        if !nummap[num] {
            nummap[num] = true  //map中没有这个num
        } else {
            return num  //重复,直接返回
        }
    }

    return -1
}

leetcode-cn执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
执行用时:
56 ms, 在所有 Go 提交中击败了8.84%的用户
内存消耗:8.9 MB, 在所有 Go 提交中击败了39.48%的用户

牛客网执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
运行时间:3ms
超过100.00%用Go提交的代码
占用内存:832KB
超过100.00%用Go提交的代码

解法二:原地交换

遍历数组并通过交换操作,使元素的 索引 与 值 一一对应(即 nums[i] = inums[i]=i )。因而,就能通过索引映射对应的值,起到与字典等价的作用。可以看这个题解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Go
func findRepeatNumber(nums []int) int {
    i := 0
    for i < len(nums) {
        if nums[i] == i {
            i++
            continue
        }
        if nums[nums[i]] == nums[i] {
            return nums[i]
        }
        tmp := nums[i]
        nums[i] = nums[tmp]
        nums[tmp] = tmp
    }

    return -1
}

leetcode-cn执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
执行用时:
40 ms, 在所有 Go 提交中击败了86.59%的用户
内存消耗:8.7 MB, 在所有 Go 提交中击败了89.50%的用户
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指 Offer 03. 数组中重复的数字
思路很简单啊,我们只需要遍历一遍数组,然后遇到重复的数字就结束遍历返回结果。我们需要使用集合来存放遍历时出现的数字,如果遍历时发现数字已经出现在集合中,则这个数字是重复数字。
Regan Yue
2023/02/13
2590
剑指 Offer 03. 数组中重复的数字
剑指 Offer 06. 从尾到头打印链表
题目 力扣-剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 题解 该题难度为简单。 解法一:两个for循环 1,先声明两个整型数组; 2,第一个for循环从头到尾记录链表的每个节点的值; 3,第二个for循环逆序记录链表的每个节点的值。 //Go /** * Definition for singly-
Zoctopus
2021/03/07
3240
LeetCode-26.Remove Duplicates from Sorted Array | 删除排序数组中的重复项
Given a sorted array nums, remove the duplicates in-place such that each element appears only once and returns the new length.
Zoctopus
2021/02/25
5050
剑指 Offer(C++版本)系列:剑指 Offer 03 数组中重复的数字
同步GitHub在此 ? https://github.com/TeFuirnever/GXL-Skill-Tree 剑指 Offer(C++版本)系列:总目录和一些提高效率的说明 剑指 Offer(
我是管小亮
2021/07/20
4080
剑指 Offer 04.二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
Zoctopus
2021/03/05
2680
剑指 Offer 03. 数组中重复的数字
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 题解: 题意如上所示,从数组中随便找一个重复的元素,并输出这个元素即可。 如示例,可以输入2;也可以输出3 //放到集合中,判断add是否成功,如果失败,说明元素
Vincent-yuan
2022/05/06
1930
剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
韩旭051
2020/09/01
2510
剑指 Offer:03. 数组中重复的数字
1. 题目 剑指 Offer 03. 数组中重复的数字 2. 描述 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 3. 实现方法 3.1 方法 1 3.1.1 思路 定义一个集合 set 来存放数组中出现过
村雨遥
2022/06/16
3850
剑指 offer 面试题精讲图解 | 03 . 数组中重复的数字
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字。
五分钟学算法
2020/05/29
5180
剑指 offer 面试题精讲图解 | 03 . 数组中重复的数字
剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
Michel_Rolle
2021/03/07
3K0
LeetCode刷题记录:剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
英雄爱吃土豆片
2020/10/29
2960
LeetCode刷题记录:剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字
2.用哈希表遍历如果这个数字为key的value为0则+1,不为0直接return。时间复杂度O(n),空间复杂度O(n)。
SakuraTears
2022/01/13
2370
剑指 Offer 03. 数组中重复的数字
LeetCode-35. Search Insert Position | 搜索插入位置
Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
Zoctopus
2021/02/25
3730
剑指 03— 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
Java架构师必看
2021/05/14
7210
【每日一题】【leetcode】8. 数组-数组中重复的数字
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 难易程度:easy
aneutron
2022/08/10
2040
剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
用户3519280
2023/07/08
1650
剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
暴躁的程序猿
2022/05/10
1550
剑指 Offer 03. 数组中重复的数字(原地算法)「建议收藏」
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
全栈程序员站长
2022/09/22
1620
LeetCode 剑指 Offer 03. 数组中重复的数字(swift)
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
freesan44
2021/07/27
4950
剑指offer第1题:数组中的重复数字
之前的刷题都是随心所欲的刷,没有按照什么章程来给各位小伙伴展现。本周开始,小白把LeetCode上面的《剑指offer》,逐一的进行分享吧~会在公众里面开一个专栏,有兴趣的小伙伴的可以在公众号里面查看的哈~每次分享的解法小白尽量选择简单易懂的解法,对于一些数学方法,咱们没必要考虑那么多,原因很简单不实用。
鹏-程-万-里
2020/07/03
3980
推荐阅读
相关推荐
剑指 Offer 03. 数组中重复的数字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档