LeetCode: 442. Find All Duplicates in an Array

xiaoxiao2021-02-28  155

LeetCode: 442. Find All Duplicates in an Array

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]

自己的代码,时间是15ms,第一次提交超时:

public class Solution { public List<Integer> findDuplicates(int[] nums) { int length = nums.length; int[] arrays = new int[length+1]; List<Integer> result = new ArrayList<Integer>(); for (int i = 0; i < length; i++) { arrays[nums[i]]++; if(arrays[nums[i]] == 2) { result.add(nums[i]); } } return result; } }

最快的答案,11ms:

public class Solution { public List<Integer> findDuplicates(int[] nums) { List<Integer> duplicates = new ArrayList<>(); if (nums == null || nums.length == 0) { return duplicates; } int[] count = new int[nums.length]; for (int i = 0; i < nums.length; i++) { count[nums[i] - 1]++; } for (int i = 0; i < nums.length; i++) { if (count[i] == 2) { duplicates.add(i + 1); } } return duplicates; } }
转载请注明原文地址: https://www.6miu.com/read-17444.html

最新回复(0)