美文网首页
2020-11-04

2020-11-04

作者: 卡农me | 来源:发表于2020-11-04 13:51 被阅读0次

    题1

    1.请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。

    例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

    提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

    我的答案:

    /**
     * @param {number[]} T
     * @return {number[]}
     */
    var dailyTemperatures = function(T) {
        var result = [];
        for(var i = 0; i < T.length; i++) {
            var today = T[i];
            var j = i + 1;
            while(j < T.length && today >= T[j] ) {
                j++;
            }
            j < T.length ? result.push(j-i) : result.push(0);
        }
        return result;
    };
    
    var dailyTemperatures = function(T) {
        let stack = [];
        let result = new Array(T.length).fill(0);
        
        for(let i = 0; i<T.length;i++){
            while(!isEmpty(stack)&&T[peek(stack)]<T[i]){
                result[peek(stack)] = i-peek(stack);
                stack.pop();            
            }
            stack.push(i);
        }
        return result;
    };
    
    function isEmpty(arr){
        return arr.length==0;
    }
    function peek(arr){
        return arr[arr.length-1];
    }
    

    题2

    相关文章

      网友评论

          本文标题:2020-11-04

          本文链接:https://www.haomeiwen.com/subject/hylgvktx.html