题解 | #Redraiment的走法#

Redraiment的走法

https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let row = 0
// 保存长度 
let len = 0
rl.on('line', function (line) {
    row++
    if(row === 1){
        len = Number(line)
    }else {
        // 梅花桩高度
        const heights = line.split(' ').map(Number)
        // 最大步数
        let len = heights.length
        // 开始遍历
        // dp[i] 表示以第 i 个桩为结尾,最多走多少步,初始是 1 步(默认这个桩是跟它之前相比最矮的)
        let dp = new Array(len).fill(1);
        for(let i = 0; i < len; i++){
            // 以第一层循环的梅花桩为结束点
            for(let j = 0; j < i; j++){
                // 则以i为结尾的步数,等于以i之前所有比i低的桩为结尾的步数 + 1,(它们的的最大值)
                // 比如 以 j = 2 结尾的 是2步, 以 j = 3 结尾的 是3步 则 以i 为结尾的就是 3 + 1了
                if(heights[i] > heights[j]){
                    dp[i] = Math.max(dp[i], dp[j] + 1)
                }
            }
        }

        console.log(Math.max(...dp))

    }
});

全部评论

相关推荐

04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务