LeetCode题解-让所有学生保持开心的分组方法数

简单说两句

作者:后端小知识

CSDN个人主页:后端小知识

GZH后端小知识

欢迎关注点赞收藏⭐️留言

LeetCode题解-让所有学生保持开心的分组方法数_第1张图片

亲爱的各位友友们,今天来给大家讲解一道力扣中等题,废话不多说,接下面我就浅浅分析下这个题吧,我一定能给你讲明白的

我们先来康康题目的意思啦,为了方便观看,我直接到力扣那里截了个屏过来✅

划重点

这道题免费哟,直接上链接:让所有学生保持开心的分组方法数

为了方便观看,我直接截图过来,贴心吧

LeetCode题解-让所有学生保持开心的分组方法数_第2张图片

这个题只要大家想到了排序就能很快做出来咯

思路

我们先从小到大的排序

分两种情况

第一种

  • 全选和全不选

​ 1.如果 0

​ 2.假设nums长度为len,如果 len > nums[len-1],那么表示可以全选

  • 选部分

    假设循环从下标0开始,用 变量 i 表示,循环到下标i时,被选中的人数 为 i+1个人;

​ 若选第i+1个人且能保持开心:需要满足两个条件 i+1 > nums[i]i+1 < nums[i+1],为什么会有i+1 < nums[i+1]这个条件呢,是因为选了这个第i+1个人时,后面的人一定是没有选的,没有选又要保持开心,就得满足那个条件,因为排了序的,能够让i+1后面那个没有选又能保持开心的话,那么后面所有的人都能保持开心

好啦,我们来康康AC的代码吧

class Solution {
public:
    int countWays(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int len = nums.size();
        int ans = (0<nums[0])+(len>nums[len-1]);
        for(int i=0;i<len-1;i++) if(i+1>nums[i]&&i+1<nums[i+1]) ans++;
        return ans;
    }
};

好啦,今天的分享就到这啦,蟹蟹友友们的观看,非常希望能够帮助友友们提高思维能力

【都看到这了,点点赞点点关注呗,爱你们】

LeetCode题解-让所有学生保持开心的分组方法数_第3张图片

结语

谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!

作者:后端小知识

CSDN个人主页:后端小知识

GZH后端小知识

欢迎关注点赞收藏⭐️留言

你可能感兴趣的:(数据结构与算法,leetcode,算法,职场和发展,后端)