跳跃游戏4
- 题号:—
- 来源:LeetCode
- 难度:困难
- 标签:
dp数组 - 语言:JavaScript
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-27
JavaScript · O(n^2) 时间 · O(n) 空间 · 更新于 2026-09-27
dp 松弛左右邻格与同值下标,未用 BFS
javascript
/**
* @difficulty hard
* @tags dp,数组
* @time O(n^2)
* @space O(n)
* @note dp 松弛左右邻格与同值下标,未用 BFS
* @跳跃游戏4
* dp
*/
let arr = [100, -23, -23, 404, 100, 23, 23, 23, 3, 404]
let n = arr.length
let dp = new Array(n).fill(Infinity)
dp[0] = 0
for (let i = 0; i < n; i++) {
if (i - 1 >= 0) { dp[i - 1] = Math.min(dp[i] + 1, dp[i - 1]) }
if (i + 1 < n) { dp[i + 1] = Math.min(dp[i] + 1, dp[i + 1]) }
for (let j = i + 1; j < n; j++) {
if (arr[j] === arr[i]) {
dp[j] = Math.min(dp[j], dp[i] + 1)
}
}
// 往前跳...
// 往前跳的处理:。。。
for (let j = 0; j < i; j++) {
if (arr[j] === arr[i]) {
dp[j] = Math.min(dp[j], dp[i] + 1)
}
}
}
console.log(dp)在 GitHub 上查看题目所在目录:lmliheng/algorithm