胧(LeetCode 1)

LeetCode刷题记录
From[My Site]: https://mirrormoon.top/#/post/17

不积跬步无以至千里
不积小流无以成江海

1.509. 斐波那契数

/**
 * @param {number} n
 * @return {number}
 */
var fib = function(n) {
    if(n == 0) {
        return 0
    }
    if(n == 1) {
        return 1
    }
    pre = 0
    now = 1
    for(var i=2;i<=n;i++) {
        var temp = now
        now = pre + now
        pre = temp
    }
    return now
};

2.322. 零钱兑换

/**
 * @param {number[]} coins
 * @param {number} amount
 * @return {number}
 */
var coinChange = function(coins, amount) {
    let list = {}


    let sub = function(num) {
        if(list[num] !== undefined) {
            return list[num]
        }

        if(num === 0) {
            return 0
        }

        if(num < 0) {
            return -1
        }

        let result = Infinity
        for(let coin of coins) {
            let child = sub(num - coin)
            if(child === -1){
                continue
            }
            result = Math.min(result, 1+child)

        }
        list[num] = result !== Infinity ? result : -1
        return list[num]
    }

    return sub(amount)
};

3.300. 最长递增子序列

/**
 * @param {number[]} nums
 * @return {number}
 */
var lengthOfLIS = function(nums) {
    let list = new Array(nums.length).fill(1)
    
    for(let i=0;i<nums.length;i++){
        for(let j=0;j<i;j++){
            if(nums[i] > nums[j]) {
                list[i] = Math.max(list[i],list[j]+1)
            }
        }
    }
    let result = 1
    for(let i=0;i<list.length;i++) {
        result = Math.max(result, list[i])
    }
    return result

};
posted @ 2021-10-13 18:43  KingRainGrey  阅读(49)  评论(0)    收藏  举报