剑指offer题解--⑤数组中重复的数字

数组中重复的数字

https://www.nowcoder.com/practice/623a5ac0ea5b4e5f95552655361ae0a8?tpId=13&&tqId=11203&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

题目分析

这道题可以通过比较当前位置下的值和该值为索引的值比较,从而使得时间复杂度为O(n) ,空间复杂度为O(1)

代码演示

    public boolean duplicate(int numbers[],int length,int [] duplication) {
        //边界值判断
        if (numbers == null || numbers.length == 0){
            duplication[0] = -1;
            return false;
        }
        //循环列表 判断当前位置的值是否与对应索引值相等
        for(int i = 0;i < length ; i++){
            //如果不等的话
            while(numbers[i] != i){
                // 判断该值与该值为索引的值时候相等
                if (numbers[i] == numbers[numbers[i]]){
                    // 如果相等则返回
                   duplication[0] = numbers[i];
                   return true;
                }
                //否则交换
                int temp = numbers[i];
                numbers[i] = numbers[temp];
                numbers[temp] = temp;
            }
        }
        return false;
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4295次浏览 75人参与
# AI面会问哪些问题? #
27838次浏览 553人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15218次浏览 221人参与
# 你的实习产出是真实的还是包装的? #
20197次浏览 342人参与
# 找AI工作可以去哪些公司? #
9097次浏览 233人参与
# 春招至今,你的战绩如何? #
65150次浏览 582人参与
# 厦门银行科技岗值不值得投 #
8030次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
8932次浏览 304人参与
# 中国电信笔试 #
32001次浏览 292人参与
# 你做过最难的笔试是哪家公司 #
33504次浏览 231人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340809次浏览 2174人参与
# 阿里笔试 #
178566次浏览 1316人参与
# 哪些公司真双非友好? #
69587次浏览 289人参与
# 机械人避雷的岗位/公司 #
62703次浏览 393人参与
# 第一份工作一定要去大厂吗 #
14611次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22077次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26250次浏览 310人参与
# 沪漂/北漂你觉得哪个更苦? #
9843次浏览 193人参与
# 应届生第一份工资要多少合适 #
20683次浏览 86人参与
# HR最不可信的一句话是__ #
6238次浏览 114人参与
# AI时代,哪个岗位还有“活路” #
11535次浏览 345人参与
# 春招你拿到offer了吗 #
831221次浏览 9987人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务