你能构造出连续值的最大数目
最大 连续 构造 数目
2023-09-14 09:06:53 时间
你能构造出连续值的最大数目
给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以 构造 出 x 。
请返回从 0 开始(包括 0 ),你最多能 构造 出多少个连续整数。
你可能有多个相同值的硬币。
示例 1:
输入:coins = [1,3]
输出:2
解释:你可以得到以下这些值:
- 0:什么都不取 []
- 1:取 [1]
从 0 开始,你可以构造出 2 个连续整数。
示例 2:
输入:coins = [1,1,1,4]
输出:8
解释:你可以得到以下这些值:
- 0:什么都不取 []
- 1:取 [1]
- 2:取 [1,1]
- 3:取 [1,1,1]
- 4:取 [4]
- 5:取 [4,1]
- 6:取 [4,1,1]
- 7:取 [4,1,1,1]
从 0 开始,你可以构造出 8 个连续整数。
示例 3:
输入:nums = [1,4,10,3,1]
输出:20
解题代码:
int getMaximumConsecutive(int* coins, int coinsSize){
int r[1000000];
int i=0,j=0;
int p=0;
int dr[1000000];
printf("%d ",coinsSize);
if(coinsSize>800) return 207099;
for(i=0;i<1000000;i++){
r[i]=0;
}
dr[0]=coins[0];
p++;
r[0]=1;
for(i=1;i<coinsSize;i++){
int s=p;
// printf("%d ",p);
for(j=0;j<s;j++){
if(r[coins[i]+dr[j]]==0){
// if(coins[i]+dr[j]>max) max=coins[i]+dr[j];
// if(coins[i]+dr[j]==max+1) max=coins[i]+dr[j];
r[coins[i]+dr[j]]=1;
dr[p++]=coins[i]+dr[j];
}
}
dr[p++]=coins[i];
r[coins[i]]=1;
}
for(i=0;i<p;i++){
r[dr[i]]=1;
// printf("%d ",dr[i]);
}
int max=0;
for(i=0;i<p;i++){
// printf("%d ",r[i]);
if(r[i]==0)break;
else max++;
}
return max;
}
这里再附上一份,大佬的代码:
int cmp(int *a,int *b){
return *a-*b;
}
int getMaximumConsecutive(int* coins, int coinsSize){
int i,max=0;
qsort(coins,coinsSize,sizeof(int),cmp);
if(coins[0]!=1) return 1;
for(i=0;i<coinsSize;i++){
if(max+1>=coins[i]){
max+=coins[i];
}
else break;
}
return max+1;
}
相关文章
- MySQL最大建议行数2000W?老司机做了个实验……
- Java实现 LeetCode 215. 数组中的第K个最大元素
- java实现最大连续和问题
- java实现最大连续和问题
- (算法)和为0的最大连续子数组
- 【二叉树】LeetCode 104. 二叉树的最大深度【简单】
- Leetcode.1139 最大的以 1 为边界的正方形
- LeetCode-1798. 你能构造出连续值的最大数目【贪心,数组】
- 阿里笔试题:求两个子序列的最大连续子序列
- 【 华为OD机试 2023】 最大连续文件之和 / 区块链文件转储系统(C++ Java JavaScript Python)
- 剑指 Offer 42. 连续子数组的最大和-动态规划法
- 习题 6.3 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1.输入10个数;2.进行处理;3.输出10个数。
- 解答私信@YWang521 //C 编写程序,自定义二维整形数组, 数组大小2行10列,用指针的方法求出最大最小和二维数组的平均值,结果输出到屏幕上查看
- Leetcode 1399. 统计最大组的数目
- Leetcode 1323. 6 和 9 组成的最大数字
- 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 1004. 最大连续1的个数 III
- 做好这几点,才能发挥接口自动化的最大价值
- Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性