Open Zheaoli opened 2 years ago
class Solution {
public int[] asteroidCollision(int[] asteroids) {
//栈模拟
Deque<Integer> stack = new ArrayDeque<>();
for (int a : asteroids) {
Integer p = stack.peek();
if (p == null || (p != null && p < 0)) {
stack.push(a);
continue;
}
if (a + p == 0) {
stack.pop();
} else if (a + p > 0) {
if (a > 0) {
stack.push(a);
}
} else {
while (p != null && p > 0 && a + p < 0) {
stack.pop();
p = stack.peek();
}
if (p == null || (p != null && p < 0)) {
stack.push(a);
} else if (p + a == 0) {
stack.pop();
}
}
}
int[] ans = new int[stack.size()];
int i = stack.size() - 1;
while (!stack.isEmpty()) {
ans[i--] = stack.pop();
}
return ans;
}
}
WeChat: Saraad
#include <iostream>
#include <vector>
using namespace std;
/*
* @lc app=leetcode.cn id=735 lang=cpp
*
* [735] 行星碰撞
*/
// @lc code=start
class Solution
{
public:
vector<int> asteroidCollision(vector<int> &asteroids)
{
vector<int> res;
int i = 0;
int n = asteroids.size();
while (i < n)
{
int asteroid = asteroids[i];
if (res.empty() || !(res.back() > 0 && asteroid < 0))
{
res.push_back(asteroid);
i++;
continue;
}
if ((-asteroid) > res.back())
{
res.pop_back();
continue;
}
if ((-asteroid) == res.back())
{
res.pop_back();
}
i++;
}
return res;
}
};
// @lc code=end
微信id: 而我撑伞 来自 vscode 插件
/**
* @param {number[]} fruits
* @return {number}
*/
var totalFruit = function(fruits) {
let left = 0
let map = {}
let count = 0
let res = 0
for(let i = 0;i<fruits.length;i++){
// 新水果
if(!map[fruits[i]]){
count ++
map[fruits[i]] = 1
} else{
// 旧水果
map[fruits[i]] ++
}
if(count<=2){
res = Math.max(res,res,i-left+1)
} else{
// 超过两种
while(count>2){
map[fruits[left]] --
if( map[fruits[left]] ===0){
count --
}
left ++
}
}
}
return res
};
wechat: Jörmungandr
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(target, nums) {
let left = 0
let sum = 0
let res = nums.length +1
for(let i = 0;i<nums.length;i++){
sum += nums[i]
while(sum >= target){
res = Math.min(res, i - left + 1)
sum -= nums[left]
left ++
}
}
return res > nums.length ? 0 : res
};
wechat: Jörmungandr
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var backspaceCompare = function(s, t) {
const checkString = (s) =>{
let array = s.split('')
let left = 0
const res = []
for (let i =0;i<array.length;i++){
if(array[i] !== '#'){
res[left] = array[i]
left ++
} else if(left>0){
res.pop()
left --
}
}
return res.join('')
}
return checkString(s) === checkString(t)
};
wechat: Jörmungandr
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
let left = 0
for(let i = 0;i<nums.length;i++){
if(nums[i]!==0){
nums[left] = nums[i]
if(left<i){
nums[i] = 0
}
left++
}
}
};
wechat: Jörmungandr
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
let left = 1
for(let i = 1;i < nums.length ;i++){
if(nums[i] !== nums[i-1]){
nums[left] = nums[i]
left ++
}
}
return left
};
wechat: Jörmungandr
367. 有效的完全平方数 /**
wechat: Jörmungandr
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
let ans = 0
let left = 0
let right = x
while(left<=right){
let middle = left + Math.floor((right-left)/2)
if(middle*middle > x){
right = middle - 1
} else{
left = middle + 1
ans = middle
}
}
return ans
};
wechat: Jörmungandr
2022-07-13