<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)307:區(qū)域和檢索 - 數(shù)組可修改

          共 1872字,需瀏覽 4分鐘

           ·

          2021-07-04 09:09

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

          今天和大家聊的問題叫做 區(qū)域和檢索 - 數(shù)組可修改,我們先來看題面:
          https://leetcode-cn.com/problems/range-sum-query-mutable/

          給你一個數(shù)組 nums ,請你完成兩類查詢,其中一類查詢要求更新數(shù)組下標對應的值,另一類查詢要求返回數(shù)組中某個范圍內元素的總和。


          示例


          輸入:
          ["NumArray", "sumRange", "update", "sumRange"]
          [[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
          輸出:
          [null, 9, null, 8]

          解釋:
          NumArray numArray = new NumArray([1, 3, 5]);
          numArray.sumRange(0, 2); // 返回 9 ,sum([1,3,5]) = 9
          numArray.update(1, 2); // nums = [1,2,5]
          numArray.sumRange(0, 2); // 返回 8 ,sum([1,2,5]) = 8


          解題

          https://blog.csdn.net/qq_36452584/article/details/107166128

          線段樹(Segment Tree)

          我們可以構造一種特殊的數(shù)據(jù)結構——線段樹,線段樹常用來處理數(shù)組相應的區(qū)間查詢(range query)和元素更新(update)操作。線段樹算是一種比較高級的樹結構,這里作為了解即可。


          這題使用的是樹狀數(shù)組。樹狀數(shù)組和線段樹很像,但能用樹狀數(shù)組解決的問題,基本上都能用線段樹解決,而線段樹能解決的樹狀數(shù)組不一定能解決。相比較而言,樹狀數(shù)組效率要高很多。



          int[] tree;
          int n;
          public NumArray(int[] nums) {
              if (nums.length > 0) {
                  n = nums.length;
                  tree = new int[n * 2];
                  buildTree(nums);
              }
          }
          private void buildTree(int[] nums) {
              for (int i = n, j = 0; i < 2 * n; i++, j++)
                  tree[i] = nums[j];
              for (int i = n - 1; i > 0; --i)
                  tree[i] = tree[i * 2] + tree[i * 2 + 1];
          }


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

          上期推文:

          LeetCode1-280題匯總,希望對你有點幫助!

          LeetCode刷題實戰(zhàn)301:刪除無效的括號

          LeetCode刷題實戰(zhàn)302:包含全部黑色像素的最小矩陣
          LeetCode刷題實戰(zhàn)303:區(qū)域和檢索 - 數(shù)組不可變
          LeetCode刷題實戰(zhàn)304:二維區(qū)域和檢索 - 矩陣不可變
          LeetCode刷題實戰(zhàn)305:島嶼數(shù)量II
          LeetCode刷題實戰(zhàn)306:累加數(shù)

          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产内射ⅹxⅹx在线 | 97超碰免费观看 | 国产成人无码永久免费 | 骚无码 | 天天肏屄视频 |