[中等]442. 数组中重复的数据

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。

找到所有出现两次的元素。

你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?

解析:难度在于不用到任何额外空间并在O(n)时间复杂度内解决这个问题。因此需要在原数组上做文章。首先我考虑排序算法,但没有排序算法能够在O(n)时间复杂度内解决这个问题。再进行审题,题目中指定数组内元素1 ≤ a[i] ≤ n ,也就是任意一个元素-1都可以是数组的一个索引,如果我们把每个元素都看作一个索引的话,那么重复元素必定指向同一个位置,因此我们只需要循环这个数组,把索引经过的值做一个标记,就可以找出有标记的位置,从而找到该索引,从而找到重复值。这个标记不能占用空间,因此我们需要修改原数值,可以将这个数值标记为原始值*-1,这样不影响该值继续作为索引。
重点在于数组内元素可以作为数组索引这一特点。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,157评论 0 3
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,362评论 1 4
  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 5,368评论 0 1
  • 一. 复杂度时间复杂度 二. 数据结构- 1. 数组- 数组为什么下标从0开始- 容器能否完全替代数组?2. 链表...
    G桂阅读 3,902评论 0 0
  • 排序算法基础 排序算法,是一种能将一串数据按照特定的排序方式进行排列的一种算法,一个排序算法的好坏,主要从时间复杂...
    jackyshan阅读 9,628评论 3 11

友情链接更多精彩内容