首页 > 其他分享 >LeetCode 1103[分糖果II]

LeetCode 1103[分糖果II]

时间:2024-11-14 10:21:46浏览次数:1  
标签:candies vecRet 数量 II 1103 iCount iAt 糖果 LeetCode

题目

链接

LeetCode 1103[分糖果II]

详情

实例

提示

题解

思路

定义容器vecRet,使每个元素值均为0,即代表每个孩子手上开始都是0个糖果

定义iCount为默认的糖果数量,初始值为1

逐个遍历容器,也就是开始给每个孩子分糖果 获取容器当前元素值,即每个孩子当前的糖果数量iAt

如果糖果数量candies不小于每个孩子默认要分发的糖果数量iCount,则该孩子分到的糖果数量为默认数量,即iCount

此时孩子手上的糖果数量为iAt + iCount

剩余糖果数量为:candies - iCount

下一个孩子需要分发的默认糖果数量为:iCount++

继续遍历,如果遍历到最后一个孩子时,手上还有剩余糖果,则又开始从第一个孩子开始遍历

直到糖果数量candies小于该孩子默认要分发的糖果数量iCount,则把剩余的糖果全部分发给孩子,即分发后孩子的糖果数量为:iAt + candies,此时,剩余糖果数量为0,则退出循环

代码

class Solution {
public:
    vector<int> distributeCandies(int candies, int num_people) {
        
        vector<int> vecRet;//定义容器
        
        for (int i = 0; i < num_people; i++)//初始化容器初值为0
            vecRet.push_back(0);

        int iCount = 1;//默认分发糖果数量

        for (int i = 0; i < num_people; i++)//遍历开始分糖果
        {
            int iAt = vecRet.at(i);//取当前元素的糖果数量

            if (candies < iCount)//不够分
            {
                iAt += candies;//全部分掉
                vecRet.at(i) = iAt;
                break;//结束
            }

            iAt += iCount;//分发默认数量的糖果
            vecRet.at(i) = iAt;
                
            if (num_people - 1 == i)//最后一个元素,赋值-1,然后循环+1变成0,即变成初始元素
                i = -1;

            candies -= iCount;//剩余糖果数量=当前糖果数量-默认分发的糖果数量
            iCount++;//默认分发糖果数量+1
        }

        return vecRet;
    }
};

标签:candies,vecRet,数量,II,1103,iCount,iAt,糖果,LeetCode
From: https://www.cnblogs.com/EricsT/p/18545459

相关文章

  • 查看IIS版本号
    要查看IIS版本,有几种常用的方法:通过IIS管理器查看版本:打开IIS管理器,可以通过在Windows操作系统的开始菜单中搜索"IIS管理器"来找到。在IIS管理器中,选择“帮助”->“关于Internet信息服务”,在弹出的对话框中可以看到IIS的版本号。通过命令行查看版本(没试出来):打开命令提......
  • LeetCode【0046】全排列
    本文目录1中文题目2求解方法:回溯法2.1方法思路2.2Python代码2.3复杂度分析3题目总结1中文题目给定一个不含重复数字的数组nums,返回其所有可能的全排列。可以按任意顺序返回答案。示例:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,......
  • [LeetCode] 1385. Find the Distance Value Between Two Arrays
    Giventwointegerarraysarr1andarr2,andtheintegerd,returnthedistancevaluebetweenthetwoarrays.Thedistancevalueisdefinedasthenumberofelementsarr1[i]suchthatthereisnotanyelementarr2[j]where|arr1[i]-arr2[j]|<=d.Exampl......
  • LeetCode 3341. Find Minimum Time to Reach Last Room I
    原题链接在这里:https://leetcode.com/problems/find-minimum-time-to-reach-last-room-i/description/题目:Thereisadungeonwith nxm roomsarrangedasagrid.Youaregivena2Darray moveTime ofsize nxm,where moveTime[i][j] representsthe minimum ......
  • 一文讲透Windows平台下的ASCII,Unicode编码问题
    ascii控制字符的编号范围是0-31和127(0x00-0x1F和0x7F),共33个字符。可显示字符编号范围是32-126(0x20-0x7E),共95个字符。((20241112221251-kkgxrg6"标准ASCII码对照表"))UNICODE美国人意识到他们应该提出一种标准方案来展示世界上所有语言中的所有字符,出于这个目的,Unicode诞......
  • P11103 [ROI 2022 Day 2] 挑战
    题目可以看成一个最大流模型。源点\(S\)往所有机器人连边,容量为\(c_i\);所有容器往汇点\(T\)连边,容量为\(a_i\);机器人\(i\)往容器\(j\in[l_i,r_i]\)连边,容量\(+\infty\)。最大流即为答案。最大流不好计算,考虑最小割。不妨令选取容器集合为\(S\),不被\(S\)包含的区间......
  • 洛谷P1182 数列分段 Section II
    洛谷P1182数列分段SectionIIP1182数列分段SectionII数列分段SectionII题目描述对于给定的一个长度为的正整数数列,现要将其分成()段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列要分成段。将其如下分段:第一段和为,第段和为,第段和为,和......
  • About SAMSUNG Galaxy Tab S9 and Sony Xperia 5 II
    SAMSUNGGalaxyTabS9默认音量为40%(7格),默认未开启杜比音效国行和港版可以互刷,没有任何问题国行刷为港版后送一年GoodNotes订阅、半年CLIPSTUDIOPAINT订阅固件下载地址:SM-X710/GalaxyTabS9(Wi-Fi)FirmwareDownloadSM-X710FreeDownload刷机工具下载地址:OdinFlashT......
  • 力扣刷题——3261. 统计满足 K 约束的子字符串数量 II
    看了题目的两个初始用例,感觉能用前缀和和滑动窗口来解决,前缀和设定为从下标0到当前位置所有符合条件的答案数量,于是先写了一个:vector<longlong>countKConstraintSubstrings(strings,intk,vector<vector<int>>&queries){intn=s.size();vector<longlong>pre......
  • Vue网站发布到iis后提示404页面不可访问
    vue重定向和跨域配置:https://zhuanlan.zhihu.com/p/5306882511.安装组件:URLRewrite:https://www.iis.net/downloads/microsoft/url-rewriteApplicationRequestRouting:https://www.iis.net/downloads/microsoft/application-request-routing2.新建一个web.config放到发布到文件......