当前位置:网站首页>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;
}
};
边栏推荐
- Monitor the width and height of the parent element, adapt to the size of the plug-in
- gethostbyname \ getaddrinfo 解析域名IP地址不安全的原因
- 华为深度学习课程第九章——卷积神经网络以及案例实践
- Gethostbyname \ getaddrinfo DNS domain name IP address is not safe
- Data Analysis 5
- 我的创作纪念日
- pytest接口自动化测试框架 | 跳过模块
- 2022.7.31-----leetcode.1161
- 22 Grab the Seat 1 C.Grab the Seat (Geometry + Violence)
- 根据指定区域内容生成图片并进行分享总结
猜你喜欢
随机推荐
力扣每日一题-第44天-290. 单词规律
JVM内存模型之深究模型特征
VSCode 快捷键及通用插件推荐
22 Grab the Seat 1 C.Grab the Seat (Geometry + Violence)
【ASWC Arxml结构分解】-7-Explicit(显式)和Implicit(隐式) Sender-Receiver communication描述差异
电磁兼容简明教程(6)测试项目
HoloView--live data
USB Protocol (2) Terminology
C语言学习概览(一)
Go 支持 OOP: 用 struct 代替 class
pytest interface automation testing framework | single/multiple parameters
pytest接口自动化测试框架 | parametrize叠加使用
基于tika实现对文件类型进行判断
Summary of test points about app updates in different ways
巧妙利用unbuffer实时写入
并发编程13-JUC之CountDownLatch
选择排序—直接选择排序和堆排序
VoLTE Basic Learning Series | Enterprise Voice Network Brief
pytest接口自动化测试框架 | 集成Allure测试报告
如何使用Photoshop合成星轨照片,夜空星轨照片后期处理方法








