首页 > 其他分享 >力扣:1103. 分糖果 II

力扣:1103. 分糖果 II

时间:2024-06-06 19:32:29浏览次数:26  
标签:II people candies 力扣 num 1103 ans 小朋友 糖果

1103. 分糖果 II

排排坐,分糖果。

我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。

给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。

然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。

重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。

返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。

示例 1:

输入:candies = 7, num_people = 4
输出:[1,2,3,1]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0,0]。
第三次,ans[2] += 3,数组变为 [1,2,3,0]。
第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。

示例 2:

输入:candies = 10, num_people = 3
输出:[5,2,3]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0]。
第三次,ans[2] += 3,数组变为 [1,2,3]。
第四次,ans[0] += 4,最终数组变为 [5,2,3]。

提示:

  • 1 <= candies <= 10^9
  • 1 <= num_people <= 1000
class Solution {
    public int[] distributeCandies(int candies, int num_people) {
        int[] ans = new int[num_people];
        ans[0] = 1;//设置初始值
        candies--;//总数要减去初始值
        int now = 2;//当前要分的糖果数
        int i = 1;
        while(candies!=0){
            if(candies-now>=0){//若剩下的糖果够分
                ans[i] += now; 
                candies -= now;
                now++;
            }else{//不够分
                ans[i] += candies;
                candies = 0;
            }
            i++;
            i %= num_people;//循环分
        }
        return ans;
    }
}

标签:II,people,candies,力扣,num,1103,ans,小朋友,糖果
From: https://blog.csdn.net/icbbm/article/details/139414707

相关文章

  • P1182 数列分段 Section II
    数列分段SectionII题目描述对于给定的一个长度为$N$的正整数数列$A_{1\simN}$,现要将其分成$M$($M\leqN$)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列$4\2\4\5\1$要分成$3$段。将其如下分段:$$[4\2][4\5][1]$$第一段和为$6$,第$2$段......
  • 力扣每日一题 6/6
    2938.区分黑球与白球[中等]题目:桌子上有 n 个球,每个球的颜色不是黑色,就是白色。给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。在每一步中,你可以选择两个相邻的球并交换它们。返回「将所有黑色球都移到右侧,所有白色球......
  • Yii2 框架中,通过 yii\db\Command 对象来执行原生 SQL 语句
    在Yii2中,你可以通过yii\db\Command对象来执行原生SQL语句。这包括查询操作(如SELECT)和数据操作(如INSERT、UPDATE、DELETE)。以下是一些常见的例子,展示如何在Yii2中执行SQL语句。执行查询语句执行SELECT查询并获取结果你可以使用queryAll()、queryOne()、queryColu......
  • 访问托管在运行 IIS 的服务器上的网站时出现 HTTP 错误 405.0
    问题:客户端请求部署在IIS中的APS.NETCOREAPI时,get请求正常,但delete和put请求报405错误解决方法:在控制面版本-》程序功能-》启用关闭Windows功能中的,IIs-》常见Http->WebDAV发布(删除),后恢复正常。即当前症状:3本文内容症状原因1原因2原因3显示另外3个本文可帮......
  • 代码随想录算法训练营第29天 | 491.递增子序列 、46.全排列 、47.全排列 II
    491.递增子序列本题和大家刚做过的90.子集II非常像,但又很不一样,很容易掉坑里。https://programmercarl.com/0491.递增子序列.html视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v关键点还要在于本层使用过的数字不能再使用/***@param{number[]}nums*@return......
  • [email protected]: Permission denied (publickey)
    输入ssh-keygen-trsa-C"[email protected]"   [email protected]的邮箱 一直回车,直到看到  然后到这个路径下打开文件  将里面的内容复制到git帐号的ssh中 ......
  • 滑动窗口最大值-力扣
    在做这道题时,首先想到的解法是使用队列来做,维护一个队列,每次保存滑动窗口大小的长度,并判断此时队列中的最大值,但这样做,在k的值较大时,出现了超时问题,代码如下:classSolution{public:vector<int>maxSlidingWindow(vector<int>&nums,intk){vector<int>r......
  • 二叉树的中序遍历-力扣
    二叉树的中序遍历,指首先遍历左节点,然后遍历中间节点,最后遍历右节点,按照这个顺序进行递归即可。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullp......
  • 二叉树的层序遍历-力扣
    本题是二叉树的层序遍历,通过一个队列来控制遍历的节点,二叉树每层的节点和上一层入队的节点个数是相同的,根据这一点编写循环条件。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*......
  • 前K个高频元素-力扣
    本题想到的解法是使用哈希表首先统计数组中每个元素出现的次数,然后对出现次数进行排序,最后进行输出。看了题解学习到使用优先级队列小顶堆来完成,小顶堆的排序规则由自己来定义。代码如下:classSolution{public:classMyComparison{public:booloper......