735. 行星碰撞
小于 1 分钟
735. 行星碰撞中等
解法:
定义一个list,遍历数组,讨论每次遍历的数asteroids[i]
。
- list 的长度为 0,直接将
asteroids[i]
添加到 list 中 asteroids[i]
> 0,添加到 list 中asteroids[i]
< 0- 定义一个bool类型的
flag
- 对list向前遍历,若遍历到的数字小于0,直接将
asteroids[i]
添加到list中 - 遍历到的数字大于0,比较两数之和
- 和为0,remove 该数字,
flag = false
退出循环 - 和小于0,remove 该数字
- 和大于0,
flag = false
退出循环
- 和为0,remove 该数字,
- 遍历结束通过
flag
判断是否要添加该数字
- 定义一个bool类型的
class Solution {
public int[] asteroidCollision(int[] asteroids) {
ArrayList<Integer> res = new ArrayList<>();
for (int i = 0; i < asteroids.length; i++) {
if (res.size() == 0) res.add(asteroids[i]);
else if (asteroids[i] > 0) res.add(asteroids[i]);
else {
boolean flag = true;
for (int j = res.size() - 1; j >= 0; j--) {
if (res.get(j) > 0) {
if (res.get(j) + asteroids[i] == 0) {
res.remove(j);
flag = false;
break;
} else if (res.get(j) + asteroids[i] < 0) {
res.remove(j);
}else {
flag = false;
break;
}
}
}
if(flag) res.add(asteroids[i]);
}
}
int[] nums = new int[res.size()];
for (int i = 0; i < res.size(); i++) {
nums[i] = res.get(i);
}
return nums;
}
}
Powered by Waline v2.15.5