目录
前言
踏平坎坷成大道,斗罢艰险又出发!
自律的尽头是自控,自控的尽头是硬控。
愿道友们披荆斩棘,终能得偿所愿。
简介
本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄弱。
今天是个人的代码随想录算法硬控自己第21天,继续贪心。
贪心妙啊!
题目链接:122. 买卖股票的最佳时机 II
var maxProfit = function (prices) {
let res = 0;
for (let i = 1; i < prices.length; i++)
// res只加正数
res += Math.max(0, prices[i] - prices[i - 1]);
return res;
};
题目链接:55. 跳跃游戏
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function (nums) {
let cover = 0;
if (nums.length === 1) return true;
for (let i = 0; i <= cover; i++) {
cover = Math.max(i + nums[i], cover);
if (cover >= nums.length - 1)
return true;
}
return false;
};
题目链接:45. 跳跃游戏 II
这题用贪心解法的核心思路在于,尽可能的压榨当前能走的最大步数,同时留意有没有比我走的更远的,如果有,那么对不起,curr = next!
/**
* @param {number[]} nums
* @return {number}
*/
var jump = function (nums) {
if (nums.length === 1) return 0;
let res = 0, curr = 0, next = 0;
for (let i = 0; i < nums.length; i++) {
next = Math.max(next, i + nums[i]);
if (i === curr) {
if (i !== nums.length - 1) {
res++;
curr = next;
// 找到了直接break,res已经被记录了
if (curr >= nums.length - 1) break;
} else break
}
}
return res;
};