<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刷題實(shí)戰(zhàn)364:加權(quán)嵌套序列和 II

          共 4546字,需瀏覽 10分鐘

           ·

          2021-08-29 02:16

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

          今天和大家聊的問(wèn)題叫做 加權(quán)嵌套序列和 II,我們先來(lái)看題面:
          https://leetcode-cn.com/problems/nested-list-weight-sum-ii/

          Given a nested list of integers, return the sum of all integers in the list weighted by their depth.
          Each element is either an integer, or a list -- whose elements may also be integers or other lists.
          Different from the previous question where weight is increasing from root to leaf, now the weight is defined from bottom up. i.e., the leaf level integers have weight 1, and the root level integers have the largest weight.

          給一個(gè)嵌套整數(shù)序列,請(qǐng)你返回每個(gè)數(shù)字在序列中的加權(quán)和,它們的權(quán)重由它們的深度決定。

          序列中的每一個(gè)元素要么是一個(gè)整數(shù),要么是一個(gè)序列(這個(gè)序列中的每個(gè)元素也同樣是整數(shù)或序列)。

          與 前一個(gè)問(wèn)題 不同的是,前一題的權(quán)重按照從根到葉逐一增加,而本題的權(quán)重從葉到根逐一增加。

          也就是說(shuō),在本題中,葉子的權(quán)重為1,而根擁有最大的權(quán)重。

          示例

          示例 1:
          輸入: [[1,1],2,[1,1]]
          輸出: 8
          解釋: 四個(gè) 1 在深度為 1 的位置, 一個(gè) 2 在深度為 2 的位置。

          示例 2:
          輸入: [1,[4,[6]]]
          輸出: 17
          解釋: 一個(gè) 1 在深度為 3 的位置, 一個(gè) 4 在深度為 2 的位置,一個(gè) 6 在深度為 1 的位置。13 + 42 + 6*1 = 17。


          解題

          https://blog.csdn.net/weixin_44171872/article/details/108766103

          主要思路:
          (1)使用廣度優(yōu)先,來(lái)逐漸的解開(kāi)各層內(nèi)容;
          (2)廣度優(yōu)先使用隊(duì)列實(shí)現(xiàn),先將輸入的數(shù)組壓入到隊(duì)列中,作為初始化的層,然后對(duì)每一層的內(nèi)容進(jìn)行判斷;
          (3)對(duì)每層的內(nèi)容取出各個(gè)元素,然后對(duì)各個(gè)元素的每個(gè)元素進(jìn)行判斷,判斷是否是單個(gè)數(shù)字,若是,則加上對(duì)應(yīng)的值,若不是,則作為新的嵌套序列壓入到隊(duì)列中;
          (4)使用變量cur_weight統(tǒng)計(jì)各層各個(gè)元素的元素值,由于在每層結(jié)束時(shí),都將該值加入到結(jié)果變量res中,就相當(dāng)于處于多少層高度的父節(jié)點(diǎn),就會(huì)被累加幾次,故相當(dāng)于乘以了對(duì)應(yīng)的權(quán)重;


          class Solution {
          public:
              int depthSumInverse(vector<NestedInteger>& nestedList) {
                  int res=0;
                  int cur_weight=0;
                  queue<vector<NestedInteger>> q;//廣度優(yōu)先
                  q.push(nestedList);//初始化
                  while(!q.empty()){//終止條件
                    //獲得當(dāng)前層的元素的數(shù)量
                      int cur_layer=q.size();
                      //遍歷該層元素
                      while(cur_layer--){
                        //獲得各個(gè)元素
                          vector<NestedInteger> cur_nest=q.front();
                          q.pop();
                          //對(duì)當(dāng)前元素的各個(gè)元素進(jìn)行判斷
                          for(int i=0;i<cur_nest.size();++i){
                            //若是單個(gè)數(shù)字,則累加統(tǒng)計(jì)變量中
                              if(cur_nest[i].isInteger()){
                                  cur_weight+=cur_nest[i].getInteger();
                              }
                              //若不是單個(gè)數(shù)字,則將其作為新的序列壓入到隊(duì)列中
                              else{
                                  q.push(cur_nest[i].getList());
                              }
                          }
                      }
                      //累加之前的值
                      res+=cur_weight;
                  }
                  return res;
              }
          };


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

          上期推文:

          LeetCode1-360題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)361:轟炸敵人
          LeetCode刷題實(shí)戰(zhàn)362:敲擊計(jì)數(shù)器

          瀏覽 4
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  久久成人理论电影手机 | 国产美女被艹 | 亚州色逼| 人人爽人人澡 | 五月丁香六月 |