![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心算法
天天向上的菜鸡杰!!
生活明朗 万物可爱 人间值得 全力以赴
展开
-
leetcode968. 监控二叉树
一:论语这个有意思,我们可以从中得出的是,一个人过错 其实是潜意思决定的 行为见品质 但知错更改也是nice的二:题目三:上码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {原创 2022-02-16 22:47:59 · 495 阅读 · 0 评论 -
leetcode714.买卖股票的
一:题目二:上码class Solution {public: int maxProfit(vector<int>& prices, int fee) { /** 思路: */ int ans = 0; int minPrice = prices[0];//最低时买入 for(int i = 1; i < prices.siz原创 2022-02-16 21:32:06 · 149 阅读 · 0 评论 -
leetcode738. 单调递增的数字
一:芭比Q了 又掉一个粉 啊呜呜呜呜呜如果作为一个领导者来说,首先就是要以身作则,自己都做不到 ,那就没什么威信去要求手下人按照要求去做二:题目三:上码class Solution {public: int monotoneIncreasingDigits(int n) { /** 思路:1.这里我们将这个数字转换成字符串的做法,可以方便我们统计单个字符 (每个字符代表一个数字 加减均可)(字符a的话也原创 2022-02-16 20:32:44 · 191 阅读 · 0 评论 -
leetcode56. 合并区间
一:论语这个做到感觉很难,因为摔的跟头少,所以很多事情就是简单的讲究,速度,可想而知,结果都是不好的。二:题目三:上码// class Solution {// public:// static bool cmp(const vector<int>&v1, const vector<int>& v2) {// return v1[1] < v2[1];// }// vector<vector&原创 2022-02-15 23:25:29 · 178 阅读 · 0 评论 -
leetcode763. 划分字母区间
一:论语保留自己的态度,尊重别人的看法,不强迫别人按照自己的意愿做事。二:题目三:上码class Solution {public: vector<int> partitionLabels(string s) { /** 思路:1.在这里我们选取的数据结构是map容器,我们只要下记录每个字母所对应的下标 然后map会记录下每个字母的的最终下标,当我们遍历字符串的时候,遇见该字符原创 2022-02-15 21:11:12 · 334 阅读 · 0 评论 -
leetcode406. 根据身高重建队列
一:你不一定逆风翻盘,但请一定向阳而生二:题目三:上码class Solution {public: /** 解析题意:这个给出的people的数组中,我们需要根据其元素people[i] = [hi,ki];然后根据其ki来表示大于hi 身高的人的个数,来进行排序。 思路:1.首先我们要排序,那么我们到底是按哪个关键值来排序呢? 1>:如果按k值排序的话,行不通原创 2022-02-14 22:09:12 · 216 阅读 · 0 评论 -
leetcode860. 柠檬水找零
一:论语这里的小不忍指的是一方面我们受到挫折而控制不住自己而大发脾气,还有一方面指的是我们的过于优柔寡断,对于自己或者他人的过失,不忍心加以责罚。二:题目三:上码class Solution {public: bool lemonadeChange(vector<int>& bills) { /** 思路:1.只要是5就统计零钱 2.当遇到10或者20的时候我们就要判断我们零钱数是否够找,如果够找回零钱的话,原创 2022-02-14 20:55:38 · 180 阅读 · 0 评论 -
7-9 删数问题 (10 分)(思路加详解)
一:题目有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。输入格式:n和k输出格式:一个数字,表示这个正整数经过删数之后的最小值。输入样例:178543 4结尾无空行输出样例:13二:思路思路:1.首先贪心的策略是每次最优,那么结果就是最优的2.那么这道题我们可以每次删除序列中 升序的结尾,重复上述操作k次,这样的话我们就能可以这个结果的最优解了解释:因为在一串数中,我们原创 2021-10-24 00:01:20 · 7956 阅读 · 4 评论 -
7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
一:前言本题需要用到并查集的知识,建议先学完并查集后再看看本题二:题目题目给出一个无向连通图,要求求出其最小生成树的权值。温馨提示:本题请使用kruskal最小生成树算法。输入格式:第一行包含两个整数 N(1<=N<=1x10 6),M(1<=M<=1x10 6) 表示该图共有 N 个结点和 M 条无向边。接下来 M 行每行包含三个整数 X ,表示有一条长度为 Z 的无向边连接结点 X输出格式:输出一个整数表示最小生成树的各边的长度之和。输入样例:4原创 2021-10-23 23:57:34 · 4477 阅读 · 1 评论 -
7-8 最优服务次序问题 (10 分)
一 :题目设有n 个顾客同时等待一项服务。顾客i需要的服务时间为 ti(1<=i<=n) 。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的总和除以n。输入格式:第一行是正整数n(1<n<1000),表示有n 个顾客。接下来的1行中,有n个正整数,表示n个顾客需要的服务时间。输出格式:计算出的最小平均等待时间,保留两位小数。输入样例:1056 12 1 99 1000 234 33 55 99 812结尾无空行原创 2021-10-22 21:58:39 · 902 阅读 · 0 评论 -
7-1 活动选择问题 (25 分)(思路+详解+扩展)宝 今天你AC了吗!!!
一:题目假定一个有n个活动(activity)的集合S={a1,a2,…,an},这些活动使用同一个资源(例如同一个阶梯教室),而这个资源在某个时刻只能供一个活动使用。每个活动ai都有一个开始时间si和一个结束时间fi,其中0<=si<fi<=32767。如果被选中,任务ai发生在半开时间区间[si,fi)期间。如果两个活动ai和aj满足[si,fi)和[sj,原创 2021-10-22 21:55:44 · 2164 阅读 · 0 评论 -
7-5 汽车加油问题 (20 分)(思路+详解)Come 宝!!!!!!!!!!!!!
一:题目题目来源:王晓东《算法设计与分析》一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。输入格式:第一行有 2 个正整数n和 k(k<=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。 第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油。 第 k+1 个加油站表示目的地。输出格式:输出最少加油次数。如果无法到达目的地,则输出“原创 2021-10-22 11:59:13 · 2128 阅读 · 0 评论 -
7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
一:题目设 x 1,x2,…,xn是实直线上的n个点。用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间?输入格式:第1行有2个正整数n(n<50)和k,表示有n个点,且固定长度闭区间的长度为k。接下来的1行中有n个整数 ai(−2000<ai<2000) ,表示n个点在实直线上的坐标(可能相同)。输出格式:最少区间数。输入样例:7 31 2 3 4 5 -2 6输出样例:3二:思路:思路:1.首先先原创 2021-10-22 11:56:44 · 955 阅读 · 1 评论 -
7-7 硬币找钱问题 (10 分)(思路+详解+double类型数据的处理)Come baby!!!!!!!!!!!!!!!!!!!!
一:题目设有6 种不同面值的硬币,各硬币的面值分别为5 分,1 角,2 角,5 角,1 元,2元。现要用这些面值的硬币来购物。在购物中希望使用最少个数硬币。例如,1 次购物需要付款0.55 元,如果没有5 角的硬币,只好用22角+11角+1*5分 共4 枚硬币来付款。对于给定的各种面值的硬币个数和付款金额,计算使用硬币个数最少的交易方案。输入格式:输入数据有若干组,第一行给出一个整数n表示输入数据的组数。以下n行每一行有6 个整数和1个有2 位小数的实数。分别表示可以使用的各种面值的硬币个数和付款原创 2021-10-22 10:06:26 · 4139 阅读 · 5 评论 -
7-2 单源最短路径 (10 分)(思路+详解+邻接表做法)Come Brather!!!!!!!!!!
一:前言本次题解先展示用邻接矩阵做的,但其会出现内存超限,因为确实是临界矩阵在数据很大的时候相比临界表是耗内存的,但是以前习惯用临界矩阵了,所以一上来就用临界矩阵做了,后来上网查了后知道邻接矩阵会内存超限,所以后来又用邻接表写了一遍。二:题目请编写程序求给定正权有向图的单源最短路径长度。图中包含n个顶点,编号为0至n-1,以顶点0作为源点。输入格式:输入第一行为两个正整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过1000。接下来e行表示每条边的信息,每行为3个非负整数a、b原创 2021-10-21 14:50:09 · 5288 阅读 · 2 评论 -
763. 划分字母区间009(贪心算法+思路+详解+图示)
一:题目:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。二:思路:思路:1.统计每个原创 2021-10-14 21:54:24 · 96 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II008(贪心算法+思路)
一:题目给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格原创 2021-10-13 22:11:42 · 82 阅读 · 0 评论 -
452. 用最少数量的箭引爆气球(贪心算法+思路+详解)07
一:题目在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,原创 2021-10-12 22:12:10 · 76 阅读 · 0 评论 -
435. 无重叠区间(贪心经典题+思路+详解)
一:题目:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入原创 2021-10-12 21:26:15 · 191 阅读 · 0 评论 -
leedcode05 找出缺失的观测数据(思路加详解)
一:题目现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n + m 次投掷数据的 平均值 。给你一个长度为 m 的整数数组 rolls ,其中 rolls[i] 是第 i 次观测的值。同时给你两个整数 mean 和 n 。返回一个长度为 n 的数组,包含所有缺失的观测数据,且满足这 n + m 次投掷的 平均值 是 mean 。如果存在多组符合要求的答案,只需要返回其中任意一原创 2021-10-04 21:48:15 · 79 阅读 · 0 评论 -
605. 种花问题003(贪心算法+思路+详解)
一:题目假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。示例 1:输入:flowerbed = [1,0,0,0,1], n = 1输出:true示例 2:输入:flowerbed = [1,0,0,原创 2021-10-02 23:02:23 · 690 阅读 · 0 评论 -
135. 分发糖果002(贪心算法+思路+详解)
一:题目老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入:[1,0,2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入:[1,2,2]输出:4解释:你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1原创 2021-10-01 08:34:33 · 220 阅读 · 0 评论 -
455. 分发饼干001(贪心算法+详解)
一:题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2原创 2021-09-30 21:43:16 · 256 阅读 · 0 评论