5
5
var asteroidCollision = function ( asteroids ) {
6
6
let result = [ ]
7
7
8
+ // const pushOrIgnore = (n) => {
9
+ // let last = result[result.length - 1]
10
+ // console.log(`pushOrIgnore - n: ${n}, l: ${last}`)
11
+ // console.log(result)
12
+ //
13
+ //
14
+ // if (last > n || last < 0) {
15
+ // // if ((result[result.length - 1] ?? -Infinity) < n) result.push(-n)
16
+ // return
17
+ // }
18
+ //
19
+ // if (last == n) {
20
+ // console.log("l===n")
21
+ // result.pop()
22
+ // } else if (last < n) {
23
+ // console.log("l<n")
24
+ // result.pop()
25
+ // result.push(-n)
26
+ // }
27
+ //
28
+ // return pushOrIgnore(n)
29
+ // }
30
+
8
31
for ( let i = 0 ; i < asteroids . length ; i ++ ) {
9
32
let curr = asteroids [ i ]
10
33
if ( curr > 0 || i === 0 ) {
@@ -16,15 +39,19 @@ var asteroidCollision = function (asteroids) {
16
39
console . log ( `> i: ${ i } , curr: ${ curr } ` )
17
40
console . log ( result )
18
41
curr *= - 1 ;
42
+
19
43
// let last = result[result.length - 1];
20
44
// console.log(`> last: ${last}, curr: ${curr}`)
21
45
22
- let idx = result . length - 1 , collided = false ;
46
+ let last = null , idx = result . length - 1 , collided = false ;
23
47
while ( idx >= 0 ) {
24
- let last = result [ idx ] // last in result
48
+ last = result [ idx ] // last in result
25
49
console . log ( `-> idx: ${ idx } , last: ${ last } ` )
26
50
27
- if ( ( last < 0 ) || ( last > curr ) ) break // prev/last > curr
51
+ if (
52
+ ( last < 0 ) // same direction
53
+ || ( last > curr ) // bigger
54
+ ) break // prev/last > curr
28
55
// all positive
29
56
30
57
console . log ( result )
@@ -45,20 +72,23 @@ var asteroidCollision = function (asteroids) {
45
72
console . log ( result )
46
73
// console.log(`--> last: ${last}, curr: ${curr}`)
47
74
// if (last < 0) last *= -1;
48
- if ( ( result [ result . length - 1 ] ?? - Infinity ) < curr ) result . push ( - curr )
75
+ // if ((result[result.length - 1] ?? -Infinity) < curr) result.push(-curr)
76
+ if ( last < curr ) result . push ( - curr )
49
77
// curr is <
78
+
79
+ // pushOrIgnore(curr)
50
80
}
51
81
52
82
return result ;
53
83
} ;
54
84
55
85
let x =
56
- asteroidCollision ( [ - 2 , 1 , - 2 , - 2 ] ) // [-2,-2,-2]
57
- // asteroidCollision([-2, -2, 1, -1]) // [-2,-2]
58
- // asteroidCollision([-2, -1, 1, 2])
59
- // asteroidCollision([5, 10, -15])
60
- // asteroidCollision([5, 10, -5])
61
- // asteroidCollision([8, -8])
62
- // asteroidCollision([10, 2, -5])
86
+ // asteroidCollision([-2, 1, -2, -2]) // [-2,-2,-2]
87
+ // asteroidCollision([-2, -2, 1, -1]) // [-2,-2]
88
+ // asteroidCollision([-2, -1, 1, 2])
89
+ // asteroidCollision([5, 10, -15])
90
+ // asteroidCollision([5, 10, -5])
91
+ // asteroidCollision([8, -8])
92
+ asteroidCollision ( [ 10 , 2 , - 5 ] )
63
93
console . log ( "Res" )
64
94
console . log ( x )
0 commit comments