动态规划
- 最优子结构
- 边界
- 状态转移方程
回文子串
题目编号:647
回文子串
const countSubstrings = (s) => {
let count = 0;
const len = s.length;
const dp = new Array(len);
for (let i = 0; i < len; i++) {
dp[i] = new Array(len).fill(false);
}
for (let j = 0; j < len; j++) {
for (let i = 0; i <= j; i++) {
if (i == j) { // 单个字符
dp[i][j] = true;
count++;
} else if (j - i == 1 && s[i] == s[j]) { // 两个字符
dp[i][j] = true;
count++;
} else if (j - i > 1 && s[i] == s[j] && dp[i + 1][j - 1]) { // 多于两个字符
dp[i][j] = true;
count++;
}
}
}
return count;
};
跳跃游戏
题目编号:55
跳跃游戏
其实这题很简单,使用贪心算法倒推即可。但是潜意识觉得不可行,自己又没有弄几个测试用例去测,下次应该避免这样的情况。
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function(nums) {
if (nums.length <= 1) {
return true;
}
let result = false
let numsLen = nums.length;
let distance = 1;
for (i = numsLen - 2; i >= 0; i--) {
if (nums[i] >= distance) {
distance = 1;
if (i === 0) result = true;
} else {
distance++;
}
}
return result;
};
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!