当前位置:网站首页>leetcode-6133:分组的最大数量
leetcode-6133:分组的最大数量
2022-08-01 07:50:00 【菊头蝙蝠】
题目
给你一个正整数数组 grades ,表示大学中一些学生的成绩。你打算将 所有 学生分为一些 有序 的非空分组,其中分组间的顺序满足以下全部条件:
第 i 个分组中的学生总成绩 小于 第 (i + 1) 个分组中的学生总成绩,对所有组均成立(除了最后一组)。
第 i 个分组中的学生总数 小于 第 (i + 1) 个分组中的学生总数,对所有组均成立(除了最后一组)。
返回可以形成的 最大 组数。
示例 1:
输入:grades = [10,6,12,7,3,5]
输出:3
解释:下面是形成 3 个分组的一种可行方法:
- 第 1 个分组的学生成绩为 grades = [12] ,总成绩:12 ,学生数:1
- 第 2 个分组的学生成绩为 grades = [6,7] ,总成绩:6 + 7 = 13 ,学生数:2
- 第 3 个分组的学生成绩为 grades = [10,3,5] ,总成绩:10 + 3 + 5 = 18 ,学生数:3
可以证明无法形成超过 3 个分组。
示例 2:
输入:grades = [8,8]
输出:1
解释:只能形成 1 个分组,因为如果要形成 2 个分组的话,会导致每个分组中的学生数目相等。
解题
方法一:脑筋急转弯
如果从小到大排序
那么每次取 1个、2个、3个… 就能得到最大的能取得的数量
而根grades具体是什么值,没有任何关系。
因此假设grades的值,是1、2、3、4、5、6、7…
第二次取2个元素,得到的分组和一定是大于第一次取的1个元素
n为所有元素个数
用等差数列计算 (首项+末项)*项数/2<=n
计算得到最大组数x即可
class Solution {
public:
int maximumGroups(vector<int>& grades) {
int len=grades.size();
return sqrt(2*len+0.25)-0.5;
}
};
方法二:排序+贪心
从小到大排序
取1个、2个、3个…以此类推
计算能取得最大组数
class Solution {
public:
int maximumGroups(vector<int>& grades) {
sort(grades.begin(),grades.end());
int res=1,n=grades.size();
int preVal=grades[0];
int preCount=1;
int curVal=0;
int curCount=0;
int i=1;
while(i<n){
while(true){
if(curCount>preCount&&curVal>preVal) break;
if(i==n) return res;
curVal+=grades[i];
curCount++;
i++;
}
res++;
preVal=curVal;
preCount=curCount;
curVal=0;
curCount=0;
}
return res;
}
};
边栏推荐
猜你喜欢

配置我的kitty

nodetype中值1、2、3分别代表什么意思

Golang:go静态文件处理

Self-made a remote control software - VeryControl

special day to remember

金山打字通 官网 下载

插入排序—直接插入排序和希尔排序

How to generate and configure public key certificate in Alipay

Upgrade to heavyweight lock, lock reentrancy will lead to lock release?

22牛客多校1 C.Grab the Seat (几何 + 暴力)
随机推荐
POJ1287联网题解
zip package all files in the directory (including hidden files/folders)
Golang: go to connect and use mysql
Go 支持 OOP: 用 struct 代替 class
我说过无数遍了:从来没有一种技术是为灵活组合这个目标而设计的
centos 安装php7.4,搭建hyperf,转发RDS
关于App不同方式更新的测试点归纳
POJ2031空间站题解
pytest interface automation testing framework | parametrize source code analysis
pytest接口自动化测试框架 | 使用函数返回值的形式传入参数值
2022杭电多校第二场1011 DOS Card(线段树)
配置我的kitty
Go supports OOP: use struct instead of class
The socket option
SAP ABAP ALV+SMARTFORS 表分页 报表打印程序
Chapter 9 of Huawei Deep Learning Course - Convolutional Neural Network and Case Practice
Shell executes SQL to send emails
sqlserver 对比两张表的差异
The log causes these pits in the thread block, you have to prevent
Holoview--Introduction