<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實戰(zhàn)135:分發(fā)糖果

          共 1638字,需瀏覽 4分鐘

           ·

          2020-12-26 11:10

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做分發(fā)糖果,我們先來看題面:
          https://leetcode-cn.com/problems/candy/

          There are N children standing in a line. Each child is assigned a rating value.


          You are giving candies to these children subjected to the following requirements:


          Each child must have at least one candy.

          Children with a higher rating get more candies than their neighbors.

          What is the minimum candies you must give?

          題意


          老師想給孩子們分發(fā)糖果,有 N 個孩子站成了一條直線,老師會根據(jù)每個孩子的表現(xiàn),預先給他們評分。

          你需要按照以下要求,幫助老師給這些孩子分發(fā)糖果:

          每個孩子至少分配到 1 個糖果。
          相鄰的孩子中,評分高的孩子必須獲得更多的糖果。
          那么這樣下來,老師至少需要準備多少顆糖果呢?


          樣例


          示例?1:
          輸入: [1,0,2]
          輸出: 5
          解釋: 你可以分別給這三個孩子分發(fā) 2、1、2 顆糖果。


          示例?2:
          輸入: [1,2,2]
          輸出: 4
          解釋: 你可以分別給這三個孩子分發(fā) 1、2、1 顆糖果。
          ?????第三個孩子只得到 1 顆糖果,這已滿足上述兩個條件。


          解題


          https://blog.csdn.net/qq_41231926/article/details/85595981

          思路:貪心算法

          初始化每個人分配的糖果數(shù)量都是1。
          (1)從前往后遍歷ratings數(shù)組,如果發(fā)現(xiàn)當前位置的值比前一個位置的值要大,需要更新當前位置candies數(shù)組的值為前一個位置candies數(shù)組的值加1。
          (2)從后往前遍歷ratings數(shù)組,如果發(fā)現(xiàn)當前位置的值比后一個位置的值要大且當前位置candies數(shù)組的值小于等于后一個位置candies數(shù)組的值,那么更新當前位置candies數(shù)組的值為后一個位置candies數(shù)組的值加1。
          時間復雜度和空間復雜度均是O(n),其中n為孩子的數(shù)量。

          public?class?Solution?{
          ????public?int?candy(int[] ratings)?{
          ????????int?n = ratings.length;
          ????????int[] candies = new?int[n];
          ????????for?(int?i = 0; i < n; i++) {
          ????????????candies[i] = 1; //每人至少發(fā)一顆糖
          ????????}
          ????????for(int?i = 1; i < n; i++){ //從前往后遍歷ratings數(shù)組
          ????????????if(ratings[i] > ratings[i - 1]){
          ????????????????candies[i] = candies[i - 1] + 1;
          ????????????}
          ????????}
          ????????for(int?i = n - 2; i >= 0; i--){ //從后往前遍歷ratings數(shù)組
          ????????????if(ratings[i] > ratings[i + 1] && candies[i] <= candies[i + 1]){
          ????????????????candies[i] = candies[i + 1] + 1;
          ????????????}
          ????????}
          ????????int?sum = 0;
          ????????for?(int?i = 0; i < n; i++) {
          ????????????sum += candies[i];
          ????????}
          ????????return?sum;
          ????}
          }


          好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動力。

          上期推文:

          LeetCode1-120題匯總,希望對你有點幫助!
          LeetCode刷題實戰(zhàn)121:買賣股票的最佳時機
          LeetCode刷題實戰(zhàn)122:買賣股票的最佳時機 II
          LeetCode刷題實戰(zhàn)123:買賣股票的最佳時機 III
          LeetCode刷題實戰(zhàn)124:二叉樹中的最大路徑和
          LeetCode刷題實戰(zhàn)125:驗證回文串
          LeetCode刷題實戰(zhàn)126:單詞接龍 II
          LeetCode刷題實戰(zhàn)127:單詞接龍
          LeetCode刷題實戰(zhàn)128:最長連續(xù)序列
          LeetCode刷題實戰(zhàn)129:求根到葉子節(jié)點數(shù)字之和
          LeetCode刷題實戰(zhàn)130:被圍繞的區(qū)域
          LeetCode刷題實戰(zhàn)131:分割回文串
          LeetCode刷題實戰(zhàn)132:分割回文串 II
          LeetCode刷題實戰(zhàn)133:克隆圖
          LeetCode刷題實戰(zhàn)134:加油站


          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷婷婷婷婷 | 天天弄天天干 | 操我骚逼~好爽麻豆 | 小嫩苞乱XXX视频 | 久久久久久久成人无码 |