您的网站未备案,电商网站的多选菜单插件,wordpress 微商城模板下载地址,环保油 东莞网站建设贪心#xff0c;顾名思义就是越贪越好#xff0c;越多越有易#xff0c;他给我的感觉是#xff0c;通常是求最大或最小问题#xff0c;相比于动态规划贪心让人更加琢磨不透#xff0c;不易看出方法#xff0c;为此在这记录我所见过的题型和思维方法#xff0c;以便回头… 贪心顾名思义就是越贪越好越多越有易他给我的感觉是通常是求最大或最小问题相比于动态规划贪心让人更加琢磨不透不易看出方法为此在这记录我所见过的题型和思维方法以便回头看看… 核心思想:动态规划是借用之前所有的最佳状态来推理出当前的最佳状态与众不同贪心则是不需要之前的状态根据一个价值标准’拿的越多越好’,然而这种价值标准必定没有影响后效性比如来到某个状态点时消耗了较高代价拿到了最大效益虽然对于当前状态来说但是对于未来的某个·点来说也许有更加好的选择消耗更少的代价来获取较高的效益所以通常贪心的目的是找到一种标准价值按照标准价值来越多越好或者是通过一定单调性排序确保每一步都是最优解然而这一步通常是最难的。 632. 最小区间 你有 k 个 非递减排列 的整数列表。找到一个 最小 区间使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a d-c 或者在 b-a d-c 时 a c则区间 [a,b] 比 [c,d] 小。 示例 1 输入nums [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]] 输出[20,24] 解释 列表 1[4, 10, 15, 24, 26]24 在区间 [20,24] 中。 列表 2[0, 9, 12, 20]20 在区间 [20,24] 中。 列表 3[5, 18, 22, 30]22 在区间 [20,24] 中。 这是一道困难题确实不好想,他的解题思路是一直观察每个数组的最小值对于这几个值来说当前几个数的值显然是最小的那个数的最佳状态不好解释为什么凭想吧。于是可以将这个数的价值记录并弹出依次循环再找出最佳结果。
135.分发糖果 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求给这些孩子分发糖果 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果计算并返回需要准备的最少糖果数目 。 记得第一次作这题时确实被这种思维感到震惊后来发现这种思维其他题也会用到因此是一个不错的例题。
尽量少的分发糖果我们先将每个人分发一个糖果正向遍历如果后一个人的分数大于前一个人那么后者在前者的基础上加1(确保右边人分数大时右边人的糖果合理大于左边)再次逆向遍历左边大于右边人分数时左边人糖果为右边人糖果加1确保左边人糖果的合理性);
这种两次遍历的思维将在下一题同样遇到。 581. 最短无序连续子数组 给你一个整数数组 nums 你需要找出一个 连续子数组 如果对这个子数组进行升序排序那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组并输出它的长度。 这题同样是利用左右两次遍历有上一题的思维。
要想找到不合理的区间我们只需要找到最右边的不合理数以及最左边不合理的数那么什么叫做不和理呢显然是左边的数大于右边或者右边的数大于左边的数如果一个数的左边没有比他大的数右边同样没有比他小的数那么说明该数是一个合理的数我们可以先正向遍历筛选出左边比自己大的不合理的数然后再逆向遍历筛选出右边小于自己的数挑出最左边和最右边下标就可以了。
这题与上一题唯一不一样的是上一题是构造合理环境这一题是检查不合理环境。
根据规律判断贪心 分成K份的最大乘积 问题一个数字n一定分成k份得到的乘积尽量大是多少数字n和k可能很大结果需对100000007取模。 这题第一眼想到的是暴力递归但是即使是记忆化搜索对于较大数字也难免会超时我们先尝试前几个数字最大解观察一下结果 n4 2 * 2 n5 3 * 2 n6 3 * 3 n7 2 * 2 n8 3 * 3 * 2 n9 3 * 3 * 3 n10 3 * 3 * 2 * 2 n11 3 * 3 *3 * 2 n12 3 * 3 * 3 * 3 n13 3 * 3 * 3 * 2 * 2
可以发现当一个数大于4时可以拆出3时尽量拆3这样使得乘积最大当然可以用数学极限来证明但是还是当作例题记录一下的好。在遇到类似的题也可以考虑一下找规律虽然这样的题很少但是对于没有思路的数学问题还是可以使用这样方法快速找到规律来解题的
排序使问题呈现一定单调性 执行所有任务的最少初始电量 每个任务有两个参数需要耗费的电量、至少多少电量才开始这个任务 返回手机需要的初始电量才能执行完所有的任务 仔细想想我们不难发现当需要消耗的电量相同时那么我们应该先让至少电量最多的任务先完成当至少电量相同时应该让消耗电量少的先完成。 但是问题来了如果需要消耗少的与至少电量少组合在一起或是消耗多和至少多的组合在一起那么我们应该怎么判定优先级呢。既然这样的话我们将至少电量减需要电量作为值来排序优先级直观上感觉是对的事实上也确实如此但是关于证明我还没有想好有点玄学。 对于有的题此法是行不通的我见过类似的题目但是将两因素作差值为优先级并不适用于所有题 知识竞赛 最近部门要选两个员工去参加一个需要合作的知识竞赛每个员工均有一个推理能力值 ai,以及一个阅读能力bi如果选择第i个人和第j个人去参加竞赛两人在推理能力方面的能力为其两者推理能力的平均值阅读能力同理现在需要最大化他们表现较差一方面的能力问这个能力值是多少。 这题依旧是排序解决只不过是按照两元素差值的绝对值来排序依次遍历每一个人寻找前面的人与这第i号人的组合最大值排序后巧妙之处在于每当来到第i号人都可以快速求出第i号人与前面的人组合的最有解那是因为对于第i号人来说他与前面任意一个人组合必定是自己能力最小的作为结果由于绝对值排序的缘故前面任何一个人都不可能弥补第i号人在弱势能力上的差距所以我们只需要记录前面所经过的两能力各最大值即可每次来到第i号人都可以快速求出组合最优解。 从这题我们应该学到的是当不得不暴力求解时尝试寻找一种策略使得快速找到一种结果对于第i元素来说一定确保其为最优
可以掌控全局变量的最优决策
在01背包里其关键思想就是要或者不要,来到某个状态时可以根据前面的所有最佳状态获取当前的最佳状态当然这种思维并不只是在动态规划里可以使用。 871. 最低加油次数 汽车从起点出发驶向目的地该目的地位于出发位置东面 target 英里处。 沿途有加油站用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处并且有 fueli 升汽油。 假设汽车油箱的容量是无限的其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时它可能停下来加油将所有汽油从加油站转移到汽车中 为了到达目的地汽车所必要的最低加油次数是多少如果无法到达目的地则返回 -1 。 注意如果汽车到达加油站时剩余燃料为 0它仍然可以在那里加油。如果汽车到达目的地时剩余燃料为 0仍然认为它已经到达目的地。 这题可以使用动态规划思想解决那么我们要维护的信息是什么呢当油不够时我们更期望之前在存储油最多的加油站加油于是需要维护路过的加油站对于来到第i个地点来说其最佳状态为以下两种情况 第一油不够时dp[i]之前最大加油站的油当前剩余的油-当前消耗的油第二油够时dp[i]dp[i]-当前消耗的油唯一贪心的点在于选取之前路过的最高存储油量的加油站。