Skip to content

Commit

Permalink
Create: 0735-asteroid-collision.rs / .js
Browse files Browse the repository at this point in the history
  • Loading branch information
AkifhanIlgaz committed Jan 6, 2023
1 parent ee7a3bc commit 72e5e6c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
28 changes: 28 additions & 0 deletions javascript/0735-asteroid-collision.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @param {number[]} asteroids
* @return {number[]}
*/
const asteroidCollision = (asteroids) => {
let stack = [];

for (asteroid of asteroids) {
while (stack.length != 0 && asteroid < 0 && stack.at(-1) > 0) {
let diff = asteroid + stack.at(-1);

if (diff < 0) {
stack.pop();
} else if (diff > 0) {
asteroid = 0;
} else {
asteroid = 0;
stack.pop();
}
}

if (asteroid) {
stack.push(asteroid);
}
}

return stack;
};
27 changes: 27 additions & 0 deletions rust/0735-asteroid-collision.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use std::cmp::Ordering;

impl Solution {
pub fn asteroid_collision(asteroids: Vec<i32>) -> Vec<i32> {
let mut stack: Vec<i32> = vec![];

for mut asteroid in asteroids {
while !stack.is_empty() && asteroid < 0 && stack.last() > Some(&0) {
let diff = asteroid + stack.last().unwrap();
match diff.cmp(&0) {
Ordering::Less => {
stack.pop();
}
Ordering::Greater => asteroid = 0,
Ordering::Equal => {
asteroid = 0;
stack.pop();
}
};
}
if asteroid != 0 {
stack.push(asteroid);
}
}
stack
}
}

0 comments on commit 72e5e6c

Please sign in to comment.