leetcode 1798
题目描述
1798. 你能构造出连续值的最大数目
给你一个长度为 n
的整数数组 coins
,它代表你拥有的 n
个硬币。第 i
个硬币的值为 coins[i]
。如果你从这些硬币中选出一部分硬币,它们的和为 x
,那么称,你可以 构造 出 x
。
请返回从 0
开始(包括 0
),你最多能 构造 出多少个连续整数。
你可能有多个相同值的硬币。
示例 1:
1 |
|
解题思路
- 贪心,排序后,假设当前的表述范围为[0,n],数组尾部每多一个数字v,其表示的范围为[0,n]&[0+v,n+v],那么需要考虑n与v的大小关系,如果v<=n+1,则两个范围可以连续上,否则返回结果(看了评论的想法)
执行用时:17 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:48.7 MB, 在所有 Java 提交中击败了92.31%的用户
通过测试用例:72 / 72
时间 O(n*logn),主要在排序的时间开销
空间 O(logn),排序需要的栈空间
1 |
|
leetcode 1798
https://kkkkkong.github.io/posts/3403.html