zoukankan      html  css  js  c++  java
  • LeetCode 1103. Distribute Candies to People

    1103. Distribute Candies to People(分糖果||)

    链接:https://leetcode-cn.com/problems/distribute-candies-to-people/

    题目:

      排排坐,分糖果。

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

    思路:

      没啥思路,套一个循环,注意改变数量和及时跳出即可。如果想要更简单一点的,可以通过通项公式直接算出该轮所需糖果,直接分配也行。

    代码:

     1 public int[] distributeCandies(int candies, int num_people) {
     2     int[] number = new int[num_people];
     3     int num = 1;
     4     int i = 0;
     5     while (candies > 0) {
     6 
     7       number[i] += num;
     8       candies -= num;
     9       i++;
    10       if (i == num_people) {
    11         i = 0;
    12       }
    13       if (candies > num + 1) {
    14         num++;
    15       } else {
    16         number[i] += candies;
    17         break;
    18       }
    19 
    20     }
    21     return number;
    22   }
  • 相关阅读:
    【BZOJ 4581】【Usaco2016 Open】Field Reduction
    【BZOJ 4582】【Usaco2016 Open】Diamond Collector
    【BZOJ 4580】【Usaco2016 Open】248
    【BZOJ 3754】Tree之最小方差树
    【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
    【51Nod 1622】【算法马拉松 19C】集合对
    【51Nod 1616】【算法马拉松 19B】最小集合
    【51Nod 1674】【算法马拉松 19A】区间的价值 V2
    【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
    【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11242789.html
Copyright © 2011-2022 走看看