题解 | #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))
}
});
顺丰集团工作强度 427人发布
