题解 | #数组中重复的数字#

数组中重复的数字

http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524

这道题的关键在于时间复杂度要求为O(n),因此如果采用每一个元素都遍历一遍数组的话,时间复杂都就成了O(n^2)。 因此我们需要另辟蹊径,让数组中的每个元素都有一个状态(为 0 为没有遍历过,为 1 则为已被遍历过)。由于 0 <= n <= 10000,所以需要 new 一个大小为 10000 的整型数组 array 。当一个数 nums[ i ] 被遍历到时,将会把 array[ nums[ i ] ] 的值置为 1 来表示这个数已被遍历过一次了,当再次遍历到 nums[ i ] 时,就说明重复了,直接把值放回。这样时间复杂度就下降到了 O(n)。

	public int duplicate (int[] numbers) {
        int[] array = new int[10000];
        for (int i = 0; i < numbers.length; i++) {
            if (array[numbers[i]] == 0) {
                array[numbers[i]] = 1;
            }else {
                return numbers[i];
            }
        }
        return -1;
    }
全部评论

相关推荐

04-03 12:09
東京大学 C++
点赞 评论 收藏
分享
我看标题以为40W,我觉得最差也得40k,点进去一看40块。你永远想不到客户的预算有多低...&nbsp;要求&ldquo;前端使用vue+element开发一个pc端宠物网站和vue+vant开发一个移动端网站,类型是宠物网站的。客户预算40&rdquo;&nbsp;全网最受欢迎的嵌入式面经面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,2800+订阅,非常适合在找工作面经薄弱的同学,3000+订阅还会涨价,提前订阅提前享受,持续更新中。原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoMc
野猪不是猪🐗:哎呀,看来这位客户预算确实挺让人意外的呢!不过,别灰心,有时候客户的预算有限,但项目完成后说不定能带来意想不到的收获呢!😊 至于你提到的嵌入式面经,听起来好像很棒的样子!如果你对求职有帮助,那确实值得订阅学习哦!悄悄告诉你,点击我的头像,我们可以私信聊聊更多求职经验和技巧哦~🎉 对了,你对Vue和Element/Vant的开发有什么疑问或者想要分享的经验吗?我们可以一起探讨一下~😉
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务