<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 0900. RLE 迭代器 ## 題目地址(900. RLE 迭代器) <https://leetcode-cn.com/problems/rle-iterator/> ## 題目描述 ``` <pre class="calibre18">``` 編寫一個遍歷游程編碼序列的迭代器。 迭代器由 RLEIterator(int[] A) 初始化,其中 A 是某個序列的游程編碼。更具體地,對于所有偶數 i,A[i] 告訴我們在序列中重復非負整數值 A[i + 1] 的次數。 迭代器支持一個函數:next(int n),它耗盡接下來的 n 個元素(n >= 1)并返回以這種方式耗去的最后一個元素。如果沒有剩余的元素可供耗盡,則 next 返回 -1 。 例如,我們以 A = [3,8,0,9,2,5] 開始,這是序列 [8,8,8,5,5] 的游程編碼。這是因為該序列可以讀作 “三個八,零個九,兩個五”。 示例: 輸入:["RLEIterator","next","next","next","next"], [[[3,8,0,9,2,5]],[2],[1],[1],[2]] 輸出:[null,8,8,5,-1] 解釋: RLEIterator 由 RLEIterator([3,8,0,9,2,5]) 初始化。 這映射到序列 [8,8,8,5,5]。 然后調用 RLEIterator.next 4次。 .next(2) 耗去序列的 2 個項,返回 8。現在剩下的序列是 [8, 5, 5]。 .next(1) 耗去序列的 1 個項,返回 8。現在剩下的序列是 [5, 5]。 .next(1) 耗去序列的 1 個項,返回 5。現在剩下的序列是 [5]。 .next(2) 耗去序列的 2 個項,返回 -1。 這是由于第一個被耗去的項是 5, 但第二個項并不存在。由于最后一個要耗去的項不存在,我們返回 -1。 提示: 0 <= A.length <= 1000 A.length 是偶數。 0 <= A[i] <= 10^9 每個測試用例最多調用 1000 次 RLEIterator.next(int n)。 每次調用 RLEIterator.next(int n) 都有 1 <= n <= 10^9 。 ``` ``` ## 前置知識 - 哈夫曼編碼和游程編碼 ## 公司 - 暫無 ## 思路 這是一個游程編碼的典型題目。 該算法分為兩個部分,一個是初始化,一個是調用`next(n)`. 我們需要做的就是初始化的時候,記住這個A。 然后每次調用`next(n)`的時候只需要 判斷n是否大于A[i](i%E4%BB%8E0%E5%BC%80%E5%A7%8B) - 如果大于A\[i\], 那就說明不夠,我們移除數組前兩項,更新n,重復1 - 如果小于A\[i\], 則說明夠了,更新A\[i\] 這樣做,我們每次都要更新A,還有一種做法就是不更新A,而是`偽更新`,即用一個變量記錄,當前訪問到的數組位置。 > 很多時候我們需要原始的,那么就必須這種放了,我的解法就是這種方法。 ## 關鍵點解析 ## 代碼 ``` <pre class="calibre18">``` <span class="hljs-title">/** * @param {number[]} A */</span> <span class="hljs-keyword">var</span> RLEIterator = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">A</span>) </span>{ <span class="hljs-keyword">this</span>.A = A; <span class="hljs-keyword">this</span>.current = <span class="hljs-params">0</span>; }; <span class="hljs-title">/** * @param {number} n * @return {number} */</span> RLEIterator.prototype.next = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">n</span>) </span>{ <span class="hljs-keyword">const</span> A = <span class="hljs-keyword">this</span>.A; <span class="hljs-keyword">while</span>(<span class="hljs-keyword">this</span>.current < A.length && A[<span class="hljs-keyword">this</span>.current] < n){ n = n - A[<span class="hljs-keyword">this</span>.current]; <span class="hljs-keyword">this</span>.current += <span class="hljs-params">2</span>; } <span class="hljs-keyword">if</span>(<span class="hljs-keyword">this</span>.current >= A.length){ <span class="hljs-keyword">return</span> <span class="hljs-params">-1</span>; } A[<span class="hljs-keyword">this</span>.current] = A[<span class="hljs-keyword">this</span>.current] - n; <span class="hljs-title">// 更新Count</span> <span class="hljs-keyword">return</span> A[<span class="hljs-keyword">this</span>.current + <span class="hljs-params">1</span>]; <span class="hljs-title">// 返回element</span> }; <span class="hljs-title">/** * Your RLEIterator object will be instantiated and called as such: * var obj = new RLEIterator(A) * var param_1 = obj.next(n) */</span> ``` ``` ## 擴展閱讀 [哈夫曼編碼和游程編碼](run-length-encode-and-huffman-encode.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看