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即可,因此步骤为:
- 数组重新排序;
- 从小到大取数,看是否构成连续区间;
- 不构成退出,返回当前区间大小。
代码如下:
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之路的主要内容,如果未能解决你的问题,请参考以下文章
594. Longest Harmonious Subsequence - LeetCode
[Leetcode]654.Maximum Binary Tree