代码随想录算法训练营第二十九天|134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列

47 阅读1分钟

134. 加油站

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var canCompleteCircuit = function(gas, cost) {
    var sum = 0,cursum =0,start=0;
    for(let i=0;i<gas.length;i++){
        cursum += gas[i] - cost[i];
        sum += gas[i] - cost[i];
        if(cursum < 0) {start = i+1; cursum =0}; 
    }
    if(sum < 0) return -1;
    return start;
};

135. 分发糖果

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var candy = function(ratings) {
    let candys = new Array(ratings.length).fill(1)
    for(let i =1; i<ratings.length;i++){
        if(ratings[i] > ratings[i-1]){
            candys[i] = candys[i-1] + 1;
        }
    }
    for(let i =ratings.length-2; i>=0;i--){
        if(ratings[i] > ratings[i+1]){
            candys[i] = Math.max(candys[i+1] + 1, candys[i]);
        }
    } 
    var res=0;
    for(let i =0; i < candys.length;i++){
            res +=candys[i];
    } 
    return res;
};

860.柠檬水找零

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var lemonadeChange = function(bills) {
    var five=0,ten=0,twen =20;
    for(let i =0;i<bills.length;i++){
        if(bills[i]===5){
            five++;
        }
        if(bills[i]===10){
            if(five <1){
                return false;
            }else{
                five--;
                ten++;
            }
        }
        if(bills[i]===20){
            if(five <1){
                return false;
            }else{
                if(ten <1 && five<=2){
                    return false;
                }else if(five>=3 &&ten<1){
                    five--;
                    five--;
                    five--;
                    twen++;
                }else{
                    five--;
                    ten--;
                    twen++;
                }
            }
        }
    }
    return true
};

406.根据身高重建队列

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现


var reconstructQueue = function(people) {
    people.sort((a,b)=>{
               if(b[0] !== a[0]) {
            return b[0] - a[0]
        } else {
            return a[1] - b[1]
        }
    });
    var queue = [];
    console.log(people)
    for(let i=0;i<people.length;i++){
        var position = people[i][1];
        console.log(position)
        console.log(queue);
        queue.splice(position,0,people[i]);
    }
    return queue;
};