贪心
贪心算法题目
南风不知意182
这个作者很懒,什么都没留下…
展开
-
leetcdoe 56 合并区间
class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { //这题跟那个射气球的很像,就是重复区间的处理 //定义结果数组 vector<vector<int>>result; if(intervals.size()==0)return resu.原创 2022-05-06 15:58:40 · 153 阅读 · 0 评论 -
leetcode738 单调递增的数字
class Solution {public: int monotoneIncreasingDigits(int n) { //首先明白我们得到的结果要是单调递增的 //我们需要先将这个数转字符串 string str=to_string(n); int flag=str.size();//用来标记赋值九从哪里开始 for(int i=str.size()-1;i>0;i--){ if(.原创 2022-05-06 15:58:10 · 151 阅读 · 0 评论 -
leetcode 714 买卖骨牌哦的最佳时机含手续费
class Solution {public: int maxProfit(vector<int>& prices, int fee) { int result=0; int minprice=prices[0]; for(int i=1;i<prices.size();i++){ //如果还有更低点,记录下来 if(prices[i]<minprice)minpric.原创 2022-05-06 15:57:32 · 77 阅读 · 0 评论 -
leetcode 968 监控二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *.原创 2022-05-06 15:56:40 · 506 阅读 · 0 评论 -
leetcode1005 k次取反后最大化的数组和
class Solution { private: static bool cmp(int a,int b){ return abs(a)>abs(b); }public: int largestSumAfterKNegations(vector<int>& nums, int k) { //求最大数组和,那我们第一肯定想用贪心 //我们知道负数肯定会拉低整个数组和的大小,所以我们需要通过绝对值来排.原创 2022-05-04 14:12:24 · 259 阅读 · 0 评论 -
leetcode 134 加油站
/方法1// class Solution {// public:// int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {// //暴力解法,时间复杂度n^2 超时// //思路:遍历每一个点,跑一圈,如果油量>=0,这个加油站可行// for(int i=0;i<gas.size();i++){//原创 2022-05-04 14:11:40 · 289 阅读 · 0 评论 -
leetcode135 分发糖果
class Solution {public: int candy(vector<int>& ratings) { //这题比较难,因为它需要考虑两边,比如说凹的形式,左右边高的情况,所以我们需要两边遍历 vector<int>CandtVce(ratings.size(),1); //从左到右,给大的加1 for(int i=1;i<ratings.size();i++){ .原创 2022-05-04 14:10:09 · 129 阅读 · 0 评论 -
leetcode860 柠檬水找零
class Solution {public: bool lemonadeChange(vector<int>& bills) { //只有5,10,20的情况 //5快直接收下,10快找5快,10快+1,20快找10快+5快或者3张5快 int five=0,ten=0,twenty=0; for(int bill:bills){ if(bill==5)five++; .原创 2022-05-04 14:09:32 · 219 阅读 · 0 评论 -
leetcode 最大子数组和
class Solution {public: int maxSubArray(vector<int>& nums) { int result=INT_MIN; int count=0; for(int i=0;i<nums.size();i++){ count+=nums[i]; if(count>result){ result=cou.原创 2022-05-03 14:38:12 · 186 阅读 · 0 评论 -
leetcode 买卖股票
class Solution {public: int maxProfit(vector<int>& prices) { //因为第一天的利润要到第二天才知道,所以我们的利润区间比价格区间少一个 //这道题,也需要常识,我们知道股票亏钱了绝对不能卖,那我们计算最大利润,把正的家加起来不就好了 int result=0; for(int i=1;i<prices.size();i++){ .原创 2022-05-03 14:37:35 · 149 阅读 · 0 评论 -
leetcode 跳跃游戏
class Solution {public: bool canJump(vector<int>& nums) { //我们只需要关心能跳跃的最大范围是否能到达终点即可,不管是等于还是超过覆盖,都相当于可以到达 //所以我们只要求最大的跳跃距离能不能到终点 int cover=0; if(nums.size()==1)return true;//等于1怎么跳都行 for(int i=0;i<.原创 2022-05-03 14:36:57 · 1025 阅读 · 0 评论 -
leetcode 跳跃游戏2
class Solution {public: int jump(vector<int>& nums) { if(nums.size()==1)return 0; int curindex=0; int nextindex=0; int ans=0; for(int i=0;i<nums.size();i++){ nextindex=max(i+nums[i],nex.原创 2022-05-03 14:35:35 · 1021 阅读 · 0 评论 -
leetcode377 摆动序列
class Solution {public: int wiggleMaxLength(vector<int>& nums) { //把这个问题看作是一个折线图,我们可以很清楚的看出他们的幅度 //摆动序列这一题要求,一正一负排下去,如果画出来的折线图是单调递增或递减,那么这中间肯定是有不符合要求的 if(nums.size()<=1)return nums.size(); int curDiff=0;...原创 2022-05-02 14:56:47 · 281 阅读 · 0 评论 -
455 分发饼干
class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { //使用贪心法,我们知道这道题目的目的是尽可能满足孩子,也就是求的是可以满足孩子的最大数量 //我们这道题贪在哪呢?贪在饼干的满足度大的可以喂饱胃口小的或者干干好的,那么我们当然要京可能用这些满足度大的饼干来满足胃口大的孩子 //先排序 .原创 2022-05-02 14:57:28 · 243 阅读 · 0 评论