6月27日算法日记

99 阅读1分钟

1.柠檬水找零

image-20220627210731295

解法

1.贪心算法

思路

采用贪心算法,如果每一个局部都可以达到最优解那么全局就可以达到最优解

var lemonadeChange = function(bills) {
    let five = 0;
    let ten = 0
    for(let bill of bills) {
        if(bill == 5) {
            five++
        } else if(bill == 10) {
            if(five <= 0) {
                return false
            }
            five--
            ten++
        } else {
            if(five > 0 && ten >0) {
                five--
                ten--
            } else if(five >= 3) {
                five -= 3
            } else {
                return false
            }
        }
    }
    return true
};

2.三角形的最大周长

image-20220627214324946解法

1.贪心算法

思路

首先将数组升序排列,然后根据两边之和大于第三边求解,如果后两个元素相加不大于前一个元素,说明不能构成三角形,则继续向下查找

var largestPerimeter = function(nums) {
    let arr = nums.sort((a,b) => b-a)
    for(let i = 0; i < arr.length - 2; i++) {
        if(arr[i] < arr[i+1] + arr[i+2]) {
            return arr[i] + arr[i+1] + arr[i+2]
        }
    }
    return 0
};