2021-03-07 1103. 分糖果 II

題目地址

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

題目描述

排排坐僚焦,分糖果。

我們買了一些糖果 candies立肘,打算把它們分給排好隊的 n = num_people 個小朋友。

給第一個小朋友 1 顆糖果茧痒,第二個小朋友 2 顆融蹂,依此類推,直到給最后一個小朋友 n 顆糖果区拳。

然后意乓,我們再回到隊伍的起點,給第一個小朋友 n + 1 顆糖果,第二個小朋友 n + 2 顆业汰,依此類推样漆,直到給最后一個小朋友 2 * n 顆糖果。

重復(fù)上述過程(每次都比上一次多給出一顆糖果放祟,當(dāng)?shù)竭_隊伍終點后再次從隊伍起點開始)跪妥,直到我們分完所有的糖果。注意眉撵,就算我們手中的剩下糖果數(shù)不夠(不比前一次發(fā)出的糖果多)纽疟,這些糖果也會全部發(fā)給當(dāng)前的小朋友。

返回一個長度為 num_people污朽、元素之和為 candies 的數(shù)組,以表示糖果的最終分發(fā)情況(即 ans[i] 表示第 i 個小朋友分到的糖果數(shù))矾睦。

示例 1:
輸入:candies = 7, num_people = 4
輸出:[1,2,3,1]
解釋:
第一次顷锰,ans[0] += 1,數(shù)組變?yōu)?[1,0,0,0]官紫。
第二次束世,ans[1] += 2,數(shù)組變?yōu)?[1,2,0,0]毁涉。
第三次贫堰,ans[2] += 3,數(shù)組變?yōu)?[1,2,3,0]其屏。
第四次偎行,ans[3] += 1(因為此時只剩下 1 顆糖果),最終數(shù)組變?yōu)?[1,2,3,1]蛤袒。
示例 2:
輸入:candies = 10, num_people = 3
輸出:[5,2,3]
解釋:
第一次妙真,ans[0] += 1,數(shù)組變?yōu)?[1,0,0]癌椿。
第二次菱阵,ans[1] += 2,數(shù)組變?yōu)?[1,2,0]晴及。
第三次,ans[2] += 3琳钉,數(shù)組變?yōu)?[1,2,3]。
第四次啦桌,ans[0] += 4及皂,最終數(shù)組變?yōu)?[5,2,3]。
 
提示:
1 <= candies <= 10^9
1 <= num_people <= 1000

思路

  1. 模擬分糖果的過程板驳。
  2. 計算每個孩子要分的次數(shù)碍拆,提前全部分好感混,最后一次的時候可能不夠,所以最后減去多分的糖果就行弧满。
    PS :
    等差數(shù)列求和公式:項數(shù) * (首項 + 末項) / 2谱秽;
    等差數(shù)列第i項值:首項 + (項數(shù) - 1)* 差值洽蛀;

題解

class Solution {
    /**
     * 執(zhí)行用時: 0 ms , 在所有 Java 提交中擊敗了 100.00% 的用戶
     * 內(nèi)存消耗: 36.3 MB , 在所有 Java 提交中擊敗了 21.35%的用戶
     */
    public int[] distributeCandies(int candies, int num_people) {
        int[] result = new int[num_people];
        int max = 1;
        // 一直分下去摹迷,不管孩子個數(shù)疟赊,看能分多少個
        while (max * (max + 1) <= 2 * candies) {
            max++;
        }

        int all = max * (1 + max) / 2;
        for (int i=0; i< num_people; i++) {
            int times = max / num_people;  // 前整幾輪分的次數(shù)
            times += (max % num_people) > i ? 1 : 0; // 最后一輪分的次數(shù)
            result[i] = times * (i + 1 + i+1 + (times - 1) * num_people) / 2; // 等差數(shù)列求和公式
        }

        result[(max - 1) % num_people] -= all - candies; // 最后可能不夠,需要減去
        
        return result;
    }
    /**
     * 執(zhí)行用時: 1 ms , 在所有 Java 提交中擊敗了 89.32% 的用戶
     * 內(nèi)存消耗: 36.2 MB , 在所有 Java 提交中擊敗了 52.37% 的用戶
     */
    public int[] distributeCandiesV0(int candies, int num_people) {
        int[] result = new int[num_people];
        int index = 0;
        int cand = 1;
        while (candies > 0) {
            if (cand > candies) {
                result[index] += candies;
                break;
            }
            result[index] += cand;
            candies -= cand;
            index++;
            cand++;
            if (index >= num_people) {
                index = 0;
            }
        }
        return result;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峡碉,一起剝皮案震驚了整個濱河市近哟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲫寄,老刑警劉巖吉执,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異地来,居然都是意外死亡戳玫,警方通過查閱死者的電腦和手機未斑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門咕宿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事府阀±铝停” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵试浙,是天一觀的道長董瞻。 經(jīng)常有香客問我,道長田巴,這世上最難降的妖魔是什么钠糊? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮固额,結(jié)果婚禮上眠蚂,老公的妹妹穿的比我還像新娘。我一直安慰自己斗躏,他們只是感情好逝慧,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啄糙,像睡著了一般笛臣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隧饼,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天沈堡,我揣著相機與錄音,去河邊找鬼燕雁。 笑死诞丽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拐格。 我是一名探鬼主播僧免,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捏浊!你這毒婦竟也來了懂衩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤金踪,失蹤者是張志新(化名)和其女友劉穎浊洞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胡岔,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡法希,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靶瘸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苫亦。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡尖淘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出著觉,到底是詐尸還是另有隱情村生,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布饼丘,位于F島的核電站趁桃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肄鸽。R本人自食惡果不足惜卫病,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望典徘。 院中可真熱鬧蟀苛,春花似錦、人聲如沸逮诲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梅鹦。三九已至裆甩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間齐唆,已是汗流浹背嗤栓。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留箍邮,地道東北人茉帅。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像锭弊,于是被迫代替她去往敵國和親堪澎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容