<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)251:展開二維向量

          共 2261字,需瀏覽 5分鐘

           ·

          2021-05-05 07:02

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

          今天和大家聊的問題叫做 展開二維向量,我們先來看題面:
          https://leetcode-cn.com/problems/flatten-2d-vector/

          Implement an iterator to flatten a 2d vector.

          請設(shè)計并實現(xiàn)一個能夠展開二維向量的迭代器。該迭代器需要支持 next 和 hasNext 兩種操作。

          示例

          Input: 2d vector =
          [
            [1,2
          ],
            [3],
            [4,5,6]
          ]
          Output: [1,2,3,4,5,6]


          解題


          需要維護(hù)兩個動態(tài)迭代器row_it和col_it,分別表示當(dāng)前位置的行和列。但是由于我們不存儲vec2d本身,所以我們還需要另外一個靜態(tài)迭代器row_end,表示整個二維數(shù)組的末尾。這里需要特別注意的是在判斷hasNext的時候,要處理那種跳過空行的情況,請見下面的代碼實現(xiàn)。


          class Vector2D {
          public:
              Vector2D(vector<vector<int>>& vec2d) {
                  if (vec2d.size() == 0) {
                      return;
                  }
                  row_it = vec2d.begin(), row_end = vec2d.end();
                  col_it = (*row_it).begin();
              }
           
              int next() {
                  return *col_it++;
              }
           
              bool hasNext() {
                  while (row_it != row_end && col_it == (*row_it).end()) {
                      ++row_it;
                      col_it = (*row_it).begin();
                  }
                  return row_it != row_end;
              }
          private:
              vector<vector<int>>::iterator row_it, row_end;
              vector<int>::iterator col_it;
          };


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

          上期推文:

          LeetCode1-240題匯總,希望對你有點(diǎn)幫助!

          LeetCode刷題實戰(zhàn)241:為運(yùn)算表達(dá)式設(shè)計優(yōu)先級

          LeetCode刷題實戰(zhàn)242:有效的字母異位詞

          LeetCode刷題實戰(zhàn)243:最短單詞距離

          LeetCode刷題實戰(zhàn)244:最短單詞距離 II

          LeetCode刷題實戰(zhàn)245:最短單詞距離 III

          LeetCode刷題實戰(zhàn)246:中心對稱數(shù)

          LeetCode刷題實戰(zhàn)247:中心對稱數(shù)II

          LeetCode刷題實戰(zhàn)248:中心對稱數(shù)III

          LeetCode刷題實戰(zhàn)249:移位字符串分組

          LeetCode刷題實戰(zhàn)250:統(tǒng)計同值子樹


          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  黄色免费一级 | 精品久久黄 | 狼友在线观看 | 国产欧美一区二区 | 国产一区二区欧美 |