-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLeetCode2007.java
More file actions
65 lines (57 loc) · 2.18 KB
/
LeetCode2007.java
File metadata and controls
65 lines (57 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.Arrays;
public class LeetCode2007 {
public static void main(String[] args) {
// 输入:changed = [1,3,4,2,6,8]
// 输出:[1,3,4]
System.out.println(Arrays.toString(new Solution2007().findOriginalArray(new int[] { 1, 3, 4, 2, 6, 8 })));
// 输入:changed = [6,3,0,1]
// 输出:[]
System.out.println(Arrays.toString(new Solution2007().findOriginalArray(new int[] { 6, 3, 0, 1 })));
// 输入:changed = [1]
// 输出:[]
System.out.println(Arrays.toString(new Solution2007().findOriginalArray(new int[] { 1 })));
// 输入:changed = [2,1]
// 输出:[1]
System.out.println(Arrays.toString(new Solution2007().findOriginalArray(new int[] { 2, 1 })));
// 输入:changed = [1,2,3,2,4,6,2,4,6,4,8,12]
// 输出:[1,2,2,3,4,6]
System.out.println(Arrays
.toString(new Solution2007().findOriginalArray(new int[] { 1, 2, 3, 2, 4, 6,
2, 4, 6, 4, 8, 12 })));
// 输入:changed = [0,1,0,0]
// 输出:[]
System.out.println(Arrays.toString(new Solution2007().findOriginalArray(new int[] { 0, 1, 0, 0 })));
}
}
class Solution2007 {
public int[] findOriginalArray(int[] changed) {
Arrays.sort(changed);
if (changed.length % 2 != 0) {
return new int[] {};
}
int[] origin = new int[changed.length / 2];
int ind = 0;
int left = 0;
int right = 1;
boolean[] visited = new boolean[changed.length];
while (true) {
while (left < changed.length - 1 && visited[left]) {
left++;
}
if (left == changed.length - 1) {
break;
}
visited[left] = true;
while (right < changed.length && (visited[right] || changed[right] != 2 * changed[left])) {
right++;
}
if (right == changed.length) {
break;
}
origin[ind] = changed[left];
visited[right] = true;
ind++;
}
return ind != changed.length / 2 ? new int[] {} : origin;
}
}