![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心算法
文章平均质量分 59
涛涛英语学不进去
Ctrl + C Ctrl + V AC !!! over .. next !!!
展开
-
暴力递归到动态规划 05 (贴纸拼词)
第三个说是加了一个动态规划,其实就是记忆化搜索吧,每次变换后,在map数组中保留结果,下次计算时如果结果算过,直接返回这个结果。第一个比第二个少通过一个测例,第一个32/101;第二个33/101。...原创 2022-07-30 00:00:39 · 247 阅读 · 0 评论 -
leetcode刷题:动态规划09(最后一块石头的重量 II)
力扣题目链接题目难度中等有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x原创 2022-07-28 00:03:34 · 191 阅读 · 0 评论 -
leetcode刷题:动态规划06(整数拆分)
给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。贪心算法,这个有数学证明的。如果我知道结果的话。原创 2022-07-24 18:12:27 · 166 阅读 · 0 评论 -
leetcode刷题:贪心算法18(监控二叉树)
如果根结点的子节点一个为空,另一个为非监控结点,则根结点必须为监控结点,专门用来监控自己,标记1。如果根结点的子节点两个都为非监控结点,则根结点必须为监控结点,专门用来监控自己,标记为1。如果左右子节点一个为监控结点,另一个为空,则当前结点为非监控结点,标记为0。如果根结点是无子结点,则根结点必须为监控结点,专门用来监控自己,标记为1。如果有一个子节点为监控结点,一个结点为空,则当前结点标记为伪叶子结点2。则当前结点为非监控结点,标记为0。如果有一个子节点是2,则当前结点必定为监控结点,标记为1。.....原创 2022-07-19 12:01:55 · 116 阅读 · 0 评论 -
leetcode刷题:贪心算法17(买卖股票的最佳时机含手续费)
首先要明确一点,我们一开始是有一只股在手,但不一定是prices[0],所以贪心思想,我们逐个选最低的股票作为当前手上持有的股。同时假设我今天又原价买了一股,往后找找能不能收益,如果能收益,那就再加上,如果不能收益,没有了,那我就不假设。注意这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。输入prices=[1,3,2,8,4,9],fee=2。总利润((8-1)-2)+((9-4)-2)=8.返回获得利润的最大值。...原创 2022-07-18 22:15:50 · 218 阅读 · 0 评论 -
leetcode刷题:贪心算法16(单调递增的数字)
给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字x和y满足x原创 2022-07-17 17:26:55 · 363 阅读 · 0 评论 -
leetcode刷题:贪心算法15(合并区间)
初始化第一个区间的开始和末尾,遍历下一个区间,如果这个区间的开始位置>end,使用map记录上一个区间的值(不可能重复,否则合并了)。更新最新的start和end。给出一个区间的集合,请合并所有重叠的区间。先二维数组按第一列升序,第二列降序。...原创 2022-07-17 13:03:27 · 207 阅读 · 0 评论 -
leetcode刷题:贪心算法14(划分字母区间)
先找到和最后一个和首字母相同的字母的位置,记为end,截取[0,end]字符串temp,从end+1位继续找,在这个字符串temp中包含这个这个字符,则这个区间没有结束!end记为这个元素的位置,字符串temp更新,直到找到所有在[0,end]中出现的元素都在这个区间中了,0更新为end+1继续找和end+1位相同的字母。字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。...原创 2022-07-17 12:28:59 · 83 阅读 · 0 评论 -
leetcode刷题:贪心算法13(无重叠区间)
我也是看了评论区的那个参考为时间的方案,如果上个事件未结束,新的事件就不能开始。区间[1,2]和[2,3]的边界相互“接触”,但没有相互重叠。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。可以认为区间的终点总是大于它的起点。...原创 2022-07-17 11:38:11 · 78 阅读 · 0 评论 -
leetcode刷题:贪心算法11(根据身高重建队列)
假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个people[i]=[hi,ki]表示第i个人的身高为hi,前面正好有ki个身高大于或等于hi的人。返回的队列应该格式化为数组queue,其中queue[j]=[hj,kj]是队列中第j个人的属性(queue[0]是排在队列前面的人)。先对元素组进行处理,以身高为第一排序顺序降序,位置为第二排序顺序升序。然后逐个插入到新的列表中,按位置插入。...原创 2022-07-16 17:09:52 · 108 阅读 · 0 评论 -
leetcode刷题:贪心算法10(柠檬水找零)
每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。哈希表做,如果第一次不是来五元,直接错。如果是,就哈希表添加元素。每次找零对应位置相减即可,尽量先减10,后减5.顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。如果你能给每位顾客正确找零,返回true,否则返回false。在柠檬水摊上,每一杯柠檬水的售价为5美元。注意,一开始你手头没有任何零钱。...原创 2022-07-16 14:58:08 · 81 阅读 · 0 评论 -
leetcode刷题:贪心算法09(分发糖果)
然后两两比较,如果前一个比后一个评分高且前一个人的糖果数量不比后一个人糖果数量多,前一个人的糖果数量=后一个人糖果数量+1;老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。创建一个糖果数组,包含每个人的糖果数量,初始化为1,每人至少一个糖果。如果前一个比后一个评分低,后一个人的糖果数量=前一个人的糖果数量+1。那么这样下来,老师至少需要准备多少颗糖果呢?...原创 2022-07-16 12:19:46 · 244 阅读 · 0 评论 -
leetcode刷题:贪心算法08(加油站)
你不能从0号或1号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。开往0号加油站,此时油箱有4-3+2=3升汽油。开往1号加油站,此时油箱有3-3+3=3升汽油。你无法返回2号加油站,因为返程需要消耗4升汽油,但是你的油箱只有3升汽油。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。.........原创 2022-07-16 10:08:25 · 271 阅读 · 0 评论 -
leetcode刷题:贪心算法07(K 次取反后最大化的数组和)
给定一个整数数组A,我们只能用以下方法修改该数组我们选择某个索引i并将A[i]替换为-A[i],然后总共重复这个过程K次。(我们可以多次选择同一个索引i。*先看有没有负数,如果没有,就把最小非负数直接变k次。*那就比较最小非负数和最小负数的绝对值,变较小值。*如果有负数,从最大负数开始变,直接变到0截止。以这种方式修改数组后,返回数组可能的最大和。*如果变不到非负数,变到哪是哪。*如果变到了非负数,且无0。...原创 2022-07-15 18:17:50 · 103 阅读 · 0 评论 -
leetcode刷题:贪心算法06(跳跃游戏 II)
每次获取可以当前覆盖的最大范围,即i+nums[i]。如果i走到了最大范围,步数++,重置最大覆盖范围为当前的最大范围。然后判断如果当前覆盖范围>=nums.length-1,结束。你的目标是使用最少的跳跃次数到达数组的最后一个位置。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。假设你总是可以到达数组的最后一个位置。......原创 2022-07-15 14:47:33 · 142 阅读 · 0 评论 -
leetcode刷题:贪心算法05(跳跃游戏)
找到为0的数,然后反向向前找,计算偏移量,如果偏移量比最大的数还大,就跳不过去了。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。...原创 2022-07-15 10:53:55 · 67 阅读 · 0 评论 -
leetcode刷题:贪心算法04(买卖股票的最佳时机II)
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。给定一个数组,它的第i个元素是一支给定股票第i天的价格。当当前元素比前一个元素大,就卖出。......原创 2022-07-15 10:19:48 · 87 阅读 · 0 评论 -
leetcode刷题:贪心算法03(最大子数组和)
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。贪心解法,如果之前的总和原创 2022-07-15 09:49:18 · 134 阅读 · 0 评论 -
leetcode刷题:贪心算法02(摆动序列)
例如,[1,7,4,9,2,5]是一个摆动序列,因为差值(6,-3,5,-7,3)是正负交替出现的。相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。少于两个元素的序列也是摆动序列。给定一个整数序列,返回作为摆动序列的最长子序列的长度。通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。...原创 2022-07-15 07:16:33 · 1202 阅读 · 0 评论 -
leetcode刷题:贪心算法01(分发饼干)
力扣题目链接假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:示例 2:提示:...原创 2022-07-14 12:59:17 · 195 阅读 · 0 评论