贪心
自由幻梦师
越刷越爽,每天五道leetcode走起
展开
-
单调递增的数字
贪心:这道题和之前的一道题非常像, 当我们整个数都是单调递增的时候,我们直接返回原数即可,当我们和 这里还有个知识点,char类型的字符++,和--是会按字符+-; 比如char a='9' ++a='10' 而a+1就变为askll码的运算。 class Solution { public: int monotoneIncreasingDigits(int n) { int k=0; auto a=to_string(n); ...原创 2022-03-07 20:42:40 · 102 阅读 · 0 评论 -
摆动序列
这道题的贪心策略, 1.我们不允许有重复的数,如果有重复的数则不满足要求,因为相减为0; 2.我们的序列要求是摆动序列, 我们其实只用保留序列前后末尾两个点和峰谷和峰顶。 其他点我们都可以去掉。 如果删除有点只有<=2的点,那么我们就直接返回nums.size()即可。 class Solution { public: int wiggleMaxLength(vector<int>& nums) { nums.erase(uni...原创 2022-03-07 19:16:22 · 69 阅读 · 0 评论 -
K次取反后最大化的数组和
贪心策略: 每次把绝对值大的负数,转化为整数,如果转换完后,k仍然大于0,那么只需要连续把最小的数,一直转换便可 解题步骤: 1.将数组按照绝对值从大到小排序,注意要按照绝对值的大小 2.从前完后遍历,如果遇到负数将其变为正数,同时k--; 3.如过k仍然大于0,那么翻转变为数值最小的元素,将k用完。 4.求和 排序判断函数,前面要加static class Solution { public: static bool cmp(int a,int b){ return ...原创 2022-03-07 16:56:20 · 97 阅读 · 0 评论 -
买卖股票的时机II
我们在做这道题时需要发现一个性质,只要发现了这个性质,这道题就会变得简单了。 我们可以原创 2022-02-08 14:01:21 · 295 阅读 · 0 评论 -
分发饼干
这道题运用的贪心策略是,胃口小的小孩吃,小的饼干,胃口大的小孩吃胃口大的饼干,所以我们只用把两个数组排个序,然后依次比较即可。 步骤: 1.排序每个小孩,和饼干 2.这里定义一个变量表示满足小孩的个数,遍历每个饼干,当然也可以遍历每个小孩,注意零界点,如果大于等于胃口就++; class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { ..原创 2022-02-08 13:37:12 · 615 阅读 · 1 评论