[leetcode] 442. Find All Duplicates in an Array
来源:互联网 发布:d3.js中文文档 编辑:程序博客网 时间:2024/06/05 02:13
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]
在数组中找出所有重复出现的数,要求时间复杂度O(n),空间复杂度O(1)
直接贴支持率最高的代码
public class Solution { // when find a number i, flip the number at position i-1 to negative. // if the number at position i-1 is already negative, i is the number that occurs twice. public List<Integer> findDuplicates(int[] nums) { List<Integer> res = new ArrayList<>(); for (int i = 0; i < nums.length; ++i) { int index = Math.abs(nums[i])-1; if (nums[index] < 0) res.add(Math.abs(index+1)); nums[index] = -nums[index]; } return res; }}
我提交的代码:
利用数组输入的特点 1<=a(n)<=n,则可以直接利用原数组当hash表用。因为原数组都是正数,标为负数表示出现过,就可以找出所有出现过的数。
之后再把数组还原。
public class Solution { public List<Integer> findDuplicates(int[] nums) { List<Integer> list = new ArrayList<Integer>(); int index,i; for(i=0;i<nums.length;i++){ index = Math.abs(nums[i])-1; if(nums[index]<0){ list.add(index+1); } nums[index] = -nums[index]; } for(i=0;i<nums.length;i++){ nums[i] = Math.abs(nums[i]); } return list; }}
0 0
- [LeetCode]Find All Duplicates in an Array
- LeetCode Find All Duplicates in an Array
- Leetcode Find All Duplicates in an Array
- [Leetcode] Find All Duplicates in an Array
- leetCode-Find All Duplicates in an Array
- [leetcode] 442. Find All Duplicates in an Array
- LeetCode 442. Find All Duplicates in an Array
- leetcode:442. Find All Duplicates in an Array
- 442. Find All Duplicates in an Array(LeetCode)
- <leetcode>442. Find All Duplicates in an Array
- [leetcode]442. Find All Duplicates in an Array(java)
- [LeetCode]442. Find All Duplicates in an Array
- Leetcode 442. Find All Duplicates in an Array
- LeetCode笔记:442. Find All Duplicates in an Array
- 【LeetCode】 442. Find All Duplicates in an Array
- [leetcode]442. Find All Duplicates in an Array
- Leetcode 442. Find All Duplicates in an Array
- LeetCode 442. Find All Duplicates in an Array
- CSS 5.3 框模型-内边距和外边距
- 每日一shell之ifconfig补充将IP配置信息写入配置文件
- C++迭代器模拟
- 日期控件
- IP地址和广播地址不在一个网段内时根据IP地址和子网掩码计算广播地址
- [leetcode] 442. Find All Duplicates in an Array
- android使用TextView实现文字的跑马灯效果
- 把linux文件夹压缩成tar.gz的命令
- 解决Malformed line 1 in source list /etc/apt/sources.list.d/google-chrome.list (type)
- ## Java 多线程 ##
- shell
- 终极大杀器
- 写给 Java 程序员的 Scala 教程
- Uva1592 Database 【map应用】【例题5-9】