Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements that appear twice in this array.

Could you do it without extra space and in O(n) runtime?

Example:

Input:
[4,3,2,7,8,2,3,1] Output:
[2,3]

题目标签:Array
  题目给了我们一个nums array,其中有一些数字出现两次,剩下的都只出现一次,让我们把重复两次的都找出来。
  因为这道题目没有规定我们不能改动 array,所以可以把array 里的 num 和 在 nums[ num - 1 ]  做一对一的映射,每次遇到一个num, 把对应位置上的 num 改成 -num 标记。如果遇到一个重复项,那么肯定已经有同样的数字来标记过了。
 

Java Solution:

Runtime beats 85.92%

完成日期:09/19/2017

关键词:Array

关键点:把num 和 nums[num - 1] 做1对1的映射

 class Solution
{
public List<Integer> findDuplicates(int[] nums)
{
List<Integer> duplicates = new ArrayList<>(); for(int num: nums)
{
int absNum = Math.abs(num); if(nums[absNum - 1] < 0) // if the number at position num - 1 is already negative
duplicates.add(absNum); // num is duplicate
else
nums[absNum - 1] *= -1;
} return duplicates;
}
}

参考资料:

https://discuss.leetcode.com/topic/64735/java-simple-solution

LeetCode 题目列表 - LeetCode Questions List

最新文章

  1. JSON.stringify////////////////////////////////zzzzzzzzzzzzzz
  2. 求最大连续bit数
  3. SQL Server 定时自动备份数据库
  4. JavaScript事件冒泡和事件委托
  5. [58 Argo]让argo跑起来
  6. Python新手学习基础之函数-关键字参数
  7. ORA-00845: MEMORY_TARGET not supported
  8. 升级automake和autoconf
  9. Angular 学习笔记 ( CDK - Accessibility )
  10. PHP全栈学习笔记9
  11. 生成表结构数据库文档sql语句
  12. spring data redis使用1——连接的创建
  13. linux添加新硬盘
  14. JS 日期比较方法
  15. pytorch使用tensorboardX进行loss可视化
  16. c++如何解决大数组栈内存不够的问题
  17. [转载]Deep Learning(深度学习)学习笔记整理
  18. HDU 3591 (完全背包+二进制优化的多重背包)
  19. [BZOJ4651][NOI2016]网格(Tarjan)
  20. oracle 数据库误删数据,误删表的恢复

热门文章

  1. 通过Excel认识POI
  2. Spring - bean的依赖关系(depends-on属性)
  3. temp-成都农商行路径
  4. Windows下chm转换为html的超简单方法
  5. 【转】开源中国上看到的一个vim的自动配置的好东西,分享下
  6. java 基础语法 1
  7. 在 macOS High Sierra 10.13 搭建 PHP 开发环境
  8. 大数据 - Teradata学习体会
  9. Redis学习——Redis持久化之RDB备份方式保存数据
  10. 再起航,我的学习笔记之JavaScript设计模式27(链模式)