当前位置: 首页 > news >正文

笔记1 第11课 贪心初步 ——柠檬水找零,分发饼干,跳跃游戏,完成所有任务所需最小能量——极客时间算法

之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为

方法类型1

题1

题解

题2

题解

方法类型2

题1

题解

……

题目大体来自leetcode 和 acwing

主要记录和理解代码,所以基本完全搬运了视频题解代码,

个人学习感受体现在大致思路的总结和注释上。


第一题

860. 柠檬水找零

本题满足贪心的正确性,因为20,10,5这些数都是向下兼容的,所以可以直接使用贪心算法。

class Solution {
public:bool lemonadeChange(vector<int>& bills) {coins[5] = coins[10] = coins[20] = 0;for (int bill : bills) {coins[bill]++;if (!exchange(bill - 5)) return false;}return true;}
private:unordered_map<int, int> coins;bool exchange(int bill) {while (coins[20] > 0 && bill >= 20) {coins[20]--;bill -= 20;}while (coins[10] > 0 && bill >= 10) {coins[10]--;bill -= 10;}while (coins[5] > 0 && bill >= 5) {coins[5]--;bill -= 5;}return bill == 0;}
};

第二题

​​​​​​455. 分发饼干

发刚好够吃的或者相对而言浪费最少的饼干,肯定最合适、

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int j = 0;int ans = 0;for (int child : g) {//s数组也排序了,j不满足小胃口的孩子,大胃口的就更不用说了while (j < s.size() && child > s[j]) j++;if (j < s.size() && child <= s[j]) {ans++;j++;}}return ans;}
};

第三题

122. 买卖股票的最佳时机 II

动规的特例

class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0;for (int i = 1; i < prices.size(); i++) {ans += max(0, prices[i] - prices[i - 1]);}return ans;}
};

第四题

​​​​​​45. 跳跃游戏 II

每一步要跳到,能跳最远下一步,的位置

class Solution {
public:int jump(vector<int>& nums) {int curr = 0;int cnt = 0;while (curr < nums.size() - 1) {int maxStep = 0;int next = curr;for (int i = 1; i <= nums[curr]; i++) {//到达if (curr + i >= nums.size() - 1) return ++cnt;//要找到能走最大的下一步的位置。if (i + nums[curr + i] >= maxStep) {maxStep = i + nums[curr + i];next = curr + i;}}curr = next;cnt++;}return cnt;}
};

第五题

​​​​​​1665. 完成所有任务的最少初始能量

完成某个任务后,剩余能量多的,排在前面做。

class Solution {
public:int minimumEffort(vector<vector<int>>& tasks) {sort (tasks.begin(), tasks.end(),[](vector<int>& A, vector<int>& B) {//肯定是剩余能量多的排在前面。return  A[1] - A[0] < B[1] - B[0];});int ans = 0;for (vector<int> task : tasks) {ans = max(ans + task[0], task[1]);}return ans;}
};


http://www.taodudu.cc/news/show-6105753.html

相关文章:

  • 学完教程,不知道接下去从哪里开始做自己的第一个APP,怎么办?酷课堂iOS交流群问答(201902期)
  • 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...
  • 干货来了 | SQL 进阶技巧
  • 干货 | SQL 进阶技巧
  • 【LeetCode】两道贪心算法题目-455分发饼干,860柠檬水找零
  • LeetCode455分发饼干
  • 柠檬模拟群面复盘
  • 7-7 快速求和
  • 1.神奇的字符串之快速求和
  • 奔波真是辛苦啊,然而生命终将逝去,只希望当一切都结束的时候,能够没有遗憾吧。
  • 热爱可抵岁月漫长,温柔可挡艰难时光—2020年终总结
  • 经典S Q L语句大全
  • 最美的时光在飞逝,为什么还在努力的路上蹒跚?
  • 时光飞逝,思考,实践,伴我一生的经验
  • 315编辑器
  • 039.简单的文本编辑器
  • mavon-editor编辑器与图片上传
  • 编辑器111
  • 题注中的图一.1变成图1.1
  • MySQL数据库实验(四):E-R图实例讲解
  • (一)1. 数据流图(DFD)概念及画法
  • 如何把word中的多级编号中的题注“图一.1”自动变成“图1.1”
  • 图一:入门篇
  • (宏) Word图片题注“图一-1”转化为“图1-1”
  • app性能测试怎么做
  • PCB布局和绘制的关键操作
  • 什么是CAD的模型和布局?
  • 阿里巴巴矢量图标库icon图标在线引用
  • 精灵随着鼠标的移动而移动
  • 【cocos2D-X】Plist使用 实现 移动精灵多图片动画