您的位置:首页 > 其它

LeetCode刷题笔记 442. 数组中重复的数据

2019-08-02 04:26 218 查看

题目描述

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

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

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

示例:
输入:
[4,3,2,7,8,2,3,1]

输出:
[2,3]

总结

妙啊,回看的时候一下就想到应该是这个用值当坐标来进行记录的方法

Sample & Demo Code

class Solution {
public List<Integer> findDuplicates(int[] nums) {
List<Integer> res = new ArrayList<>();
for(int i : nums) {
int temp = Math.abs(i);
if(nums[temp-1] < 0)
res.add(temp);
else
nums[temp-1] *= -1;
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: