2860. 让所有学生保持开心的分组方法数

简介: 【9/3】

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。班主任希望能够在让所有学生保持开心的情况下选出一组学生:

如果能够满足下述两个条件之一,则认为第 i 位学生将会保持开心:

这位学生被选中,并且被选中的学生人数 严格大于 nums[i] 。
这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i] 。
返回能够满足让所有学生保持开心的分组方法的数目。

示例 1:

输入:nums = [1,1]
输出:2
解释:
有两种可行的方法:
班主任没有选中学生。
班主任选中所有学生形成一组。
如果班主任仅选中一个学生来完成分组,那么两个学生都无法保持开心。因此,仅存在两种可行的方法。
示例 2:

输入:nums = [6,0,3,3,6,7,2,7]
输出:3
解释:
存在三种可行的方法:
班主任选中下标为 1 的学生形成一组。
班主任选中下标为 1、2、3、6 的学生形成一组。
班主任选中所有学生形成一组。

提示:

1 <= nums.length <= 105
0 <= nums[i] < nums.length

题解:
只需要排序之后,在每个分界点判断,前后是否符合条件。
判断这个i>nums[i-1]&&nums[i]>i。

class Solution {
public:
    int countWays(vector<int>& nums) {
        int n = nums.size();
        sort(nums.begin(),nums.end());
        int ans=0;
        for (int i=0;i<n;i++){
            if(i==n-1){
                if(nums[i]<=i){
                    ans++;                   
                }                
            }
            else if(i==0){
                if(nums[i]>0){
                    ans++;
                }
            }
            else if(i>nums[i-1]&&nums[i]>i){
                ans++;
                cout<<i<<" "<<nums[i-1]<<" "<<nums[i]<<endl;
            }
        }
        return ans;
    }
};
目录
相关文章
|
7月前
|
算法 测试技术
枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)
枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)
LeetCode题解-让所有学生保持开心的分组方法数
LeetCode题解-让所有学生保持开心的分组方法数
|
6月前
1064 朋友数 (20 分) //感觉题目有问题。
1064 朋友数 (20 分) //感觉题目有问题。
|
7月前
|
算法
算法编程(二十九):统计一致字符串的数目
算法编程(二十九):统计一致字符串的数目
84 0
|
7月前
|
存储 算法 前端开发
【算法训练营】队列 合集(1) 933. 最近的请求次数 || LCR 041. 数据流中的移动平均值 || 1700. 无法吃午餐的学生数量
【算法训练营】队列 合集(1) 933. 最近的请求次数 || LCR 041. 数据流中的移动平均值 || 1700. 无法吃午餐的学生数量
67 0
|
机器学习/深度学习 Cloud Native
【刷题日记】2044. 统计按位或能得到最大值的子集数目
本次刷题日记的第 8 篇,力扣题为:2044. 统计按位或能得到最大值的子集数目 ,中等
|
算法 程序员
【LeetCode——编程能力入门第一天】基本数据类型[在区间范围内统计奇数数目/去掉最低工资和最高工资后的工资平均值)
给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 示例 1: 输入:low = 3, high = 7 输出:3 解释:3 到 7 之间奇数数字为 [3,5,7] 。 示例 2: 输入:low = 8, high = 10 输出:1 解释:8 到 10 之间奇数数字为 [9] 。 提示: 0 <= low <= high <= 10^9。
109 0
if语句案例(奇偶数、考试奖励)案例、分析、代码
if语句案例(奇偶数、考试奖励)案例、分析、代码!
6-7 统计某类完全平方数 (20 分)
6-7 统计某类完全平方数 (20 分)
142 0
2016年省赛真题c/c++ c组 第七题 寒假作业 全排列+check+筛选条件
2016年省赛真题c/c++ c组 第七题 寒假作业 全排列+check+筛选条件