问题描述:

排排坐,分糖果。

我们买了一些糖果 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]。

解题思路

这是个比较规律的算法,当糖果数量大于0就一直循环分配,小于0就把当前剩余数量分配给当前的人物就行了。

解题代码

class Solution {

public int[] distributeCandies(int candies, int num_people) {

int [] a =new  int[num_people];

int add=0;

while(candies>=0){

for( int i=0;i<a.length;i++){

add++;

candies-=add;

if(candies<0){

a[i]=a[i]+candies+add;

break;

}else{

a[i]+=add;

}

}

}

return a;

}

}

代码评价与优化

执行结果:

通过

显示详情

执行用时 :1 ms, 在所有 Java 提交中击败了90.51%的用户

内存消耗 :37.4 MB, 在所有 Java 提交中击败了5.27%的用户

我觉得:看起来应该是牺牲了控件复杂度换取了时间复杂度,不过这个算法速度快就行了,后续应该可以优化一下控件复杂度。

leetCode简单算法之排排坐,分糖果相关推荐

  1. LeetCode刷题之575.分糖果

    LeetCode刷题之575.分糖果 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 给定一个偶数长度的数组,其中不同的数字代表着不同 ...

  2. LeetCode 简单算法题

    使用Nodejs 抓取的LeetCode 简单算法题  一步一步来,先攻破所有简单的题目,有些题目不适合使用JS解决,请自行斟酌 Letcode 简单题汇总 104. Maximum Depth of ...

  3. LeetCode简单题之公平的糖果交换

    题目 爱丽丝和鲍勃拥有不同总数量的糖果.给你两个数组 aliceSizes 和 bobSizes ,aliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃 ...

  4. LeetCode简单题之打折购买糖果的最小开销

    题目 一家商店正在打折销售糖果.每购买 两个 糖果,商店会 免费 送一个糖果. 免费送的糖果唯一的限制是:它的价格需要小于等于购买的两个糖果价格的 较小值 . 比方说,总共有 4 个糖果,价格分别为 ...

  5. LeetCode简单题之拥有最多糖果的孩‭子

    题目 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目. 对每一个孩子,检查是否存在一种方案,将额外的 extraCa ...

  6. 贪心算法解决(分糖果问题)

    思路:(1)先进行分析,找到符合一边的情况,再找符合另一边的情况. (2)我们先确定右边评分大于左边的情况,即从前向后遍历. 此时局部最优,只要右边孩子的评分大于左边,右边孩子比左边孩子多一个糖果.全 ...

  7. LeetCode简单题之分糖果 II

    题目 排排坐,分糖果. 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友. 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小 ...

  8. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  9. Leetcode - 1103. 分糖果 II 排排坐,分糖果。

    分糖果 II 排排坐,分糖果. 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友. 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最 ...

最新文章

  1. G20国家科技竞争力大盘点,中国科研创新表现突出,人工智能变道超车
  2. 基于SSM实现商户管理系统
  3. sort与sorted的区别
  4. 你真的了解 Cookie 和 Session 吗?
  5. Building Fire Stations
  6. 简单的ios网络数据交互
  7. 记录通用权限管理系统组件使用心得体会,写技术博客赢IPad2
  8. linux 黑酷命令行背景图片
  9. phpexcel导入超过1W行导入出错
  10. 邮箱登陆时显示服务器连接失败,邮箱显示无法连接服务器
  11. 完整会议议程:NGINX Sprint China 2022 年度线上大会
  12. channel的用法
  13. oracle 自动异地备份,实现Oracle异地数据自动备份方案 | 学步园
  14. 产生随机数(随机数)
  15. arcmap按图斑批量出图_ArcGIS实践教程(34)ArcGIS/ArcMap提取图斑转折点坐标(37)ArcGIS/ArcMap多个图层(要素类)的合并...
  16. android——(图片框与进度条)
  17. 研究生计算机学院换研究方向不换导师,南邮自杀研究生曾抱怨“导师不让毕业” 导师被停职...
  18. VR学习第四节:VR+直播 VR+电影
  19. solar2 android,Solar 2
  20. pycharms 如何退出 python shell

热门文章

  1. 成功将不支持网络的USB打印机变成网络打印机
  2. C++全套视频教程分享——
  3. Involution:空间不共享?可完全替代卷积的高性能算子 | CVPR 2021
  4. 英语语法最终珍藏版笔记-10动名词
  5. 虚拟域服务器拒绝连接,远程winrm上的“访问被拒绝”
  6. 使用WordPress插件搭建一个商城(一)(小白推荐)
  7. 微拍堂积极践行社会责任,促进中国经济高质量发展
  8. 计划评审技术PERT和关键路径法CP
  9. 20级网络学生---循环
  10. 通达信VOL实战监测,很实用 可以替代成交量指标公式 源码 效果图