-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAsteroidCollision.java
More file actions
86 lines (75 loc) · 2.52 KB
/
AsteroidCollision.java
File metadata and controls
86 lines (75 loc) · 2.52 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import com.wyn.RunCode;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@SpringBootTest(classes = RunCode.class)
public class AsteroidCollision {
public int[] asteroidCollision(int[] asteroids) {
List<Integer> finalList = new ArrayList<>();
List<Integer> list = new ArrayList<>();
for (int asteroid : asteroids) {
list.add(asteroid);
}
collision(list, finalList, asteroids);
int[] ints = new int[finalList.size()];
for (int i = 0; i < finalList.size(); i++) {
ints[i] = finalList.get(i);
}
return ints;
}
public void collision(List<Integer> list, List<Integer> finalList, int[] asteroids){
List<Integer> index = new ArrayList<>();
int max = 0;
int min = 0;
for (int asteroid : list) {
if (asteroid > max) {
max = asteroid;
}
if (asteroid < min) {
min = asteroid;
}
}
if(max == 0 || min == 0){
finalList.addAll(list);
}
int fin = max > -min ? min : max;
for(int i = 0; i < list.size(); i++){
if(Math.abs(list.get(i)) >= Math.abs(fin)){
index.add(i);
}
}
if(index.size() == 1){
finalList.add(list.get(index.get(0)));
}else if(index.size() == 0){
for (Integer integer : list) {
if(integer * fin > 0){
finalList.add(integer);
}
}
}else{
for (int i = 0; i < index.size(); i++) {
if(i == index.size() - 1){
List<Integer> subList = list.subList(index.get(i), list.size());
collision(subList, finalList, asteroids);
}else if(index.get(i + 1) - index.get(i) > 1){
List<Integer> subList = list.subList(index.get(i), index.get(i + 1));
collision(subList, finalList, asteroids);
}
else{
if(asteroids[i] != -fin){
finalList.add(asteroids[i]);
}
}
}
}
}
@Test
public void test(){
int[] ints = {5,10,-5};
System.out.println(Arrays.toString(asteroidCollision(ints)));;
}
}