zoukankan      html  css  js  c++  java
  • 1103.分糖果II

    原题链接

    题解

    直接手动模拟过去,时间复杂度为O(n)

    代码如下

    class Solution {
    public:
        vector<int> distributeCandies(int candies, int num_people) {
            vector<int> res(num_people, 0);
            int idx = 0, ans = 1;
            while(candies > 0){
                if(ans <= candies)
                res[idx ++] += ans, candies -= ans, ans ++;
                else res[idx ++] += candies, candies = 0;
                if(idx == num_people) idx = 0;
            }
            return res;
        }
    };
    

    其实我们可以发现,每次应该分的的糖果数减一mod人数(假设人的编号从0开始),就是我们的人的编号,即数组下标

    代码如下

    class Solution {
    public:
        vector<int> distributeCandies(int candies, int num_people) {
            vector<int> res(num_people, 0);
            int ans = 0;
            while(candies > 0){
                res[ans % num_people] += min(ans + 1, candies);//要注意C++中先进行运算的是右边
                candies -= ++ ans;
            }
    
            return res;
        }
    };
    
  • 相关阅读:
    项目总结升级2
    项目总结升级1
    项目总结升级
    项目总结4
    项目总结3
    体温填报app2.0开发
    每日博客
    第一周开课博客
    学习日报
    学习日报
  • 原文地址:https://www.cnblogs.com/Lngstart/p/13339647.html
Copyright © 2011-2022 走看看