美文网首页
【算法题】2358. 分组的最大数量

【算法题】2358. 分组的最大数量

作者: 程序员小2 | 来源:发表于2023-05-22 07:52 被阅读0次

题目:

给你一个正整数数组 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 <= grades.length <= 10^5
1 <= grades[i] <= 10^5

java代码:

class Solution {
    public int maximumGroups(int[] grades) {
        long len = grades.length;
        long ans = 1;
        long l = 1, r = len;
        while (l <= r) {
            long m = ((r - l) >> 1) + l; // 假设分成m组
            long need = (1 + m) * m / 2;// 分m组至少need个人,等差数列求和。
            if (need > len) { // 人不够
                r = m - 1;// 大了就缩
            } else { // 人有富余
                ans = m;// 先收了再说,可能是这个,也有可能存在一个大于当前m,但是仍然满足need<=len的数,需要向右找,所以
                l = m + 1; // 可以再挤一挤,试一试, 富余的人还有可能多分出组,需要继续尝试
            }
        }
        return (int) ans;
    }
}

相关文章

  • 找到有最多员工的项目(多个最大值)

    LeetCode 1076题 1、先找到最大的数是多少,再分组筛选数量=最大的项目id 2、筛选条件≥ALL(子查...

  • 分组top N问题的分析过程

    背景 : 最近有一个需求要求对数据底表先进行分组, 再对分组内的数据进行排序, 最后限制每个分组的最大数量; 业...

  • 121. Best Time to Buy and Sell S

    最大子段和问题的变形:此题相关的算法是:Kadane算法代码:

  • 【算法题】1921. 消灭怪物的最大数量

    题目: 你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。给你一个 下标从 0 开始 且长度为 n 的整数...

  • Java分组密码算法DES

    Java分组密码算法DES 1实验内容 掌握分组密码算法DES方法,能用高级语言实现分组密码算法DES。DES算法...

  • 2020-07-28

    均值漂移非常类似于 KMeans 算法,除了一个很重要的因素,你不需要指定分组的数量。均质漂亮算法自己寻找簇。出于...

  • 蓝桥杯算法题:核桃的数量

    题目 小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据...

  • DES 加密算法

    DES 加密算法算是分组加密算法中最简单的算法了,了解 DES 加密算法开源对分组加密算法有一个初步的了解。因此,...

  • 公务员考试笔记(五)

    特殊规律 A、图形拼接(多位分组题) ①特征:几个封闭的空间连在一起 ②分类: ⑴无公共边 ⑵★有公共边(数量、样...

  • pytest的fixture学习十四

    通过fixture实例自动分组测试用例 pytest在测试运行期间,最大程度的减少活动fixture的数量,如果具...

网友评论

      本文标题:【算法题】2358. 分组的最大数量

      本文链接:https://www.haomeiwen.com/subject/qswzsdtx.html