给你一个正整数数组 grades ,表示大学中一些学生的成绩。你打算将 所有 学生分为一些 有序 的非空分组,其中分组间的顺序满足以下全部条件:
第 i 个分组中的学生总成绩 小于 第 (i + 1) 个分组中的学生总成绩,对所有组均成立(除了最后一组)。
第 i 个分组中的学生总数 小于 第 (i + 1) 个分组中的学生总数,对所有组均成立(除了最后一组)。
返回可以形成的 最大 组数。
https://leetcode.cn/problems/maximum-number-of-groups-entering-a-competition/description/
- 解一元二次方程
- 开平方:
sqrt (double a)
;通用次方:pow (double a,double b)
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
*/
package com.huawei.prac;
import java.util.HashMap;
import java.util.Map;
class SolutionRd {
static Map<Long, Integer> mem = new HashMap<>();
public static void main(String[] args) {
int[] grades = {10, 6, 12, 7, 3, 5};
System.out.println(maximumGroups(grades)); // 3
}
/**
* 2358. 分组的最大数量[脑筋急转弯]
* 解一元二次方程
* sqrt (double a) 开平方
* pow (double a,double b)
*
* @param grades
* @return
*/
public static int maximumGroups(int[] grades) {
return (int) (Math.sqrt((double) grades.length * 2 + (double) 1 / 4) - (double) 1 / 2);
}
}