LeetCode 1798 你能构造出连续值的最大数目贪心HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1798 你能构造出连续值的最大数目贪心HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
虽然是中等题,但是解题的思路很巧妙,值得一做。题目要求在给定的数组下,构造从0开始的连续整数,即0,1,2…,首先肯定是要把数组进行排序,便于从小到大找数。那么该如何查找呢?总不能一个个去试吧,因此一个非常巧妙的思路是构建区间。从0开始的区间,对于一个区间范围[0,x],加入一个y,那么就加入了新的区间[y,x+y],如果两个区间能够合并,那么就是连续区间了,所以只要y<=x即可,因此步骤为:

  1. 数组重新排序;
  2. 从小到大取数,看是否构成连续区间;
  3. 不构成退出,返回当前区间大小。

代码如下:

class Solution 
public:
    int getMaximumConsecutive(vector<int>& coins) 
        int res = 1;
        sort(coins.begin(), coins.end());
        for(auto& coin : coins) 
            if(coin > res) 
                break;
            
            res += coin;
        
        return res;
    
;

以上是关于LeetCode 1798 你能构造出连续值的最大数目贪心HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

leetcode152

594. Longest Harmonious Subsequence - LeetCode

[Leetcode]654.Maximum Binary Tree

Leetcode 654.最大二叉树

Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree)

LeetCode-654-构建最大二叉树