美文网首页
Leetcode 解题汇总

Leetcode 解题汇总

作者: Cannedgirl | 来源:发表于2019-03-04 18:19 被阅读0次

-------- 部分题目参考《剑指offer》思路

1.  数组中重复的数据 

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

要求:时间复杂度O(n),空间复杂度O(1)

解题思路:长度为n的数组下标范围为0-n-1,如果数组中没有重复的元素,则元素1-n 刚好放置在0-n-1的位置上。假设访问a[i]的数值为val,如果val刚好为i-1,则访问下一个元素;如果val不是i-1,那将val放置到a[val-1]上,此时要检查如果a[val-1]已经是val,说明val在数组中重复出现,找到一个重复数据val,为了避免后续重复找到数据val,将a[val-1]上的数据修改为-1,因此,如果访问元素的数值为-1也可以直接进行下一个元素的访问

C++实现:数组中重复的数字

相关文章

网友评论

      本文标题:Leetcode 解题汇总

      本文链接:https://www.haomeiwen.com/subject/groiuqtx.html