当前位置:网站首页>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;
}
};
边栏推荐
- 企业数据虚拟化综合指南
- JVM: Runtime Data Area - PC Register (Program Counter)
- 我的创作纪念日
- VoLTE基础学习系列 | 什么是SIP和IMS中的Forking
- Three aspects of Ali: How to solve the problem of MQ message loss, duplication and backlog?
- 【手撕AHB-APB Bridge】~ AHB地址总线的低两位为什么不用来表示地址呢?
- pytest interface automation testing framework | single/multiple parameters
- 2022杭电中超杯(1)个人题解
- Golang:go模版引擎的使用
- JSON 与 JS 对象的区别
猜你喜欢
随机推荐
【MySQL】操作表DML相关语句
正则表达式符号
【杭电多校第四场 B题】最短路图+缩点dp
Monitor the width and height of the parent element, adapt to the size of the plug-in
Shell执行SQL发邮件
POJ2031空间站题解
搜索框字符自动补全
HPC系统简介
Chapter 9 of Huawei Deep Learning Course - Convolutional Neural Network and Case Practice
华为深度学习课程第九章——卷积神经网络以及案例实践
类似 MS Project 的项目管理工具有哪些
USB 协议 (二) 术语
C语言中编译时出现警告C4013(C语言不加函数原型产生的潜在错误)
Redis 3.2.3 crashed by signal: 11 服务宕机问题排查
What do the values 1, 2, and 3 in nodetype mean?
2022杭电多校第二场1011 DOS Card(线段树)
Three aspects of Ali: How to solve the problem of MQ message loss, duplication and backlog?
关于App不同方式更新的测试点归纳
JVM: Runtime Data Area - PC Register (Program Counter)
VSCode 快捷键及通用插件推荐