⭐简单说两句⭐
作者:后端小知识
CSDN个人主页:后端小知识
🔎GZH:
后端小知识
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
亲爱的各位友友们,今天来给大家讲解一道力扣中等题,废话不多说,接下面我就浅浅分析下这个题吧,我一定能给你讲明白的😀😀😀
我们先来康康题目的意思啦,为了方便观看,我直接到力扣那里截了个屏过来✅
划重点
这道题免费哟,直接上链接🥰🥰🥰:让所有学生保持开心的分组方法数
为了方便观看,我直接截图过来,贴心吧😁😁😁
这个题只要大家想到了排序就能很快做出来咯
思路
我们先从小到大的排序
分两种情况
第一种
1.如果 0 2.假设nums长度为len,如果 len > nums[len-1],那么表示可以全选 选部分 假设循环从下标0开始,用 变量 若选第i+1个人且能保持开心:需要满足两个条件 好啦,我们来康康AC的代码吧 🎁🎁好啦,今天的分享就到这啦,蟹蟹友友们的观看,非常希望能够帮助友友们提高思维能力😘😘😘 【都看到这了,点点赞点点关注呗,爱你们】😚😚 结语 💬 作者:后端小知识 CSDN个人主页:后端小知识 🔎GZH: 🎉欢迎关注🔎点赞👍收藏⭐️留言📝i
表示,循环到下标i
时,被选中的人数 为 i+1
个人; i+1 > nums[i]
与 i+1 < nums[i+1]
,为什么会有i+1 < nums[i+1]
这个条件呢,是因为选了这个第i+1个人时,后面的人一定是没有选的,没有选又要保持开心,就得满足那个条件,因为排了序的,能够让i+1后面那个没有选又能保持开心的话,那么后面所有的人都能保持开心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;
}
};
谢谢你的阅读
,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!😘😘😘后端小知识