Skip to content

Commit 61623cd

Browse files
committed
fd
1 parent ca7fce8 commit 61623cd

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

solution/src/main/java/com/inuker/solution/FindAllDuplicatesInAnArray.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ public List<Integer> findDuplicates(int[] nums) {
1313
List<Integer> res = new ArrayList<>();
1414
for (int i = 0; i < nums.length; ++i) {
1515
int index = Math.abs(nums[i]) - 1;
16-
if (nums[index] < 0)
16+
if (nums[index] < 0) {
1717
res.add(Math.abs(index + 1));
18+
}
1819
nums[index] = -nums[index];
1920
}
2021
return res;

solution/src/main/java/com/inuker/solution/FindAllNumbersDisappearedInAnArray.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,26 @@
88
*/
99

1010
public class FindAllNumbersDisappearedInAnArray {
11+
//4,3,2,7,8,2,3,1
1112

13+
/**
14+
* 这题的前提是数组的size为n,元素范围为[1,n]
15+
* 核心思想是给所有出现过的数标为负
16+
* 那剩下的为正的数就是没出现过的
17+
*/
1218
public List<Integer> findDisappearedNumbers(int[] nums) {
1319
List<Integer> ret = new ArrayList<Integer>();
1420

15-
for(int i = 0; i < nums.length; i++) {
21+
for (int i = 0; i < nums.length; i++) {
1622
int val = Math.abs(nums[i]) - 1;
17-
if(nums[val] > 0) {
23+
if (nums[val] > 0) {
1824
nums[val] = -nums[val];
1925
}
2026
}
2127

22-
for(int i = 0; i < nums.length; i++) {
23-
if(nums[i] > 0) {
24-
ret.add(i+1);
28+
for (int i = 0; i < nums.length; i++) {
29+
if (nums[i] > 0) {
30+
ret.add(i + 1);
2531
}
2632
}
2733
return ret;

test/src/main/java/com/inuker/test/main.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.inuker.test;
22

3+
import com.inuker.solution.FindAllNumbersDisappearedInAnArray;
34
import com.inuker.solution.MinimumSizeSubarraySum;
45
import com.inuker.solution.NextPermutation;
56
import com.inuker.solution.SearchForARange;
@@ -31,9 +32,10 @@ public class main {
3132

3233
public static void main(String[] args) {
3334
int[] arr = new int[]{
34-
1, 2, 3, 4, 5
35+
4,3,2,7,8,2,3,1
3536
};
36-
int len = new MinimumSizeSubarraySum().minSubArrayLen2(15, arr);
37-
System.out.println(len);
37+
for (int n : new FindAllNumbersDisappearedInAnArray().findDisappearedNumbers(arr)) {
38+
System.out.print(n + " ");
39+
}
3840
}
3941
}

0 commit comments

Comments
 (0)