Zheaoli / do-something-right

MIT License
37 stars 3 forks source link

2022-07-13 #297

Open Zheaoli opened 2 years ago

Zheaoli commented 2 years ago

2022-07-13

SaraadKun commented 2 years ago

735. 行星碰撞

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

dreamhunter2333 commented 2 years ago
#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 插件

restartgr commented 2 years ago

904. 水果成篮

/**
 * @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

restartgr commented 2 years ago

209. 长度最小的子数组

/**
 * @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

restartgr commented 2 years ago

844. 比较含退格的字符串

/**
 * @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

restartgr commented 2 years ago

283. 移动零

/**
 * @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

restartgr commented 2 years ago

26. 删除有序数组中的重复项

/**
 * @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

restartgr commented 2 years ago

367. 有效的完全平方数 /**

restartgr commented 2 years ago

69. x 的平方根

/**
 * @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