力扣labuladong一刷day17天前綴和數組

力扣labuladong一刷day17天前綴和數組

一、303. 區域和檢索 - 數組不可變

題目鏈接:https://leetcode.cn/problems/range-sum-query-immutable/
思路:本題即為讓寫一個類用于計算指定區間內的數字和,但如果直接采用for循環的方式,當有很多的輸入實例時,會有很多的重復計算,非常浪費時間。
既然是計算區間和的值,那么我們可以提前準備一個前綴和數組,如nums=[a, b, c, d] 前綴和數組為preSum = [a, a+b, a+b+c, a+b+c+d],這樣以后再計算區間和只需要使用前綴合數組preSum[right]-preSum[left]即可,這樣就把時間復雜度降低到了常量級。是一個不錯的小技巧。

class NumArray {int[] preSum;public NumArray(int[] nums) {this.preSum = new int[nums.length+1];for (int i = 1; i < preSum.length; i++) {preSum[i] = preSum[i-1] + nums[i-1];}}public int sumRange(int left, int right) {return preSum[right+1] - preSum[left];}
}

二、304. 二維區域和檢索 - 矩陣不可變

題目鏈接:https://leetcode.cn/problems/range-sum-query-2d-immutable/
思路:這兩道前綴和的題目讓我收益匪淺,使用前綴和的數組提前計算數組,把時間復雜度降低到O(1)。要想搞清楚前綴和數組,首先要在使用之前把定義明確,本題求二維區域和,定義前綴和數組為:preSum[i][j]為nums數組從區間[0,0]到[i-1, j-1]。明確定義后寫遞推公式,和動態規劃的dp數組特別像, preSum[i][j] = preSum[i-1][j] + preSum[i][j-1]+matrix[i-1][j-1] - preSum[i-1][j-1];
我感覺本題其實就是動態規劃的應用。

class NumMatrix {int[][] preSum;public NumMatrix(int[][] matrix) {int m = matrix.length, n = matrix[0].length;this.preSum = new int[m+1][n+1];for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {preSum[i][j] = preSum[i-1][j] + preSum[i][j-1]+matrix[i-1][j-1] - preSum[i-1][j-1];}}}public int sumRegion(int row1, int col1, int row2, int col2) {return preSum[row2+1][col2+1] + preSum[row1][col1] - preSum[row2+1][col1] - preSum[row1][col2+1];}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164475.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164475.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164475.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity調用dll踩坑記

請用寫一段代碼&#xff0c;讓unity無聲無息的崩潰。 你說這怕是有點難哦&#xff0c;誰會這么不幸呢&#xff1f;不幸的是&#xff0c;我幸運的成為了那個不幸的人。 unity里面調用dll的方式是使用 DllImport &#xff0c;比如有一個 Hello.dll&#xff0c;里面有一個 char* …

圖片如何去除水印?試試這三種去水印方法!

從事自媒體行業的小伙伴們&#xff0c;你們是否經常為文章配圖而煩惱呢&#xff1f;下載的圖片大部分帶有各種各樣的水印或者多余元素&#xff0c;讓人感到困擾。今天&#xff0c;我要分享三個去水印的妙招&#xff0c;這是新媒體人必備的圖片處理技能&#xff0c;快來一起學起…

【MATLAB源碼-第87期】基于matlab的Q-learning算法柵格地圖路徑規劃,自主選擇起始點和障礙物。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 Q-learning是一種無模型的強化學習算法&#xff0c;適用于有限的馬爾可夫決策過程&#xff08;MDP&#xff09;。它的核心是學習一個動作價值函數&#xff08;action-value function&#xff09;&#xff0c;即Q函數&#xf…

面試官:【js多維數組扁平化去重并排序】

文章目錄 前言方法一方法二方法三方法四總結后言 前言 hello world歡迎來到前端的新世界 &#x1f61c;當前文章系列專欄&#xff1a;JavaScript &#x1f431;?&#x1f453;博主在前端領域還有很多知識和技術需要掌握&#xff0c;正在不斷努力填補技術短板。(如果出現錯誤&a…

【騰訊云云上實驗室-向量數據庫】Tencent Cloud VectorDB在實戰項目中替換Milvus測試

為什么嘗試使用Tencent Cloud VectorDB替換Milvus向量庫&#xff1f; 亮點&#xff1a;Tencent Cloud VectorDB支持Embedding&#xff0c;免去自己搭建模型的負擔&#xff08;搭建一個生產環境的模型實在耗費精力和體力&#xff09;。 騰訊云向量數據庫是什么&#xff1f; 騰…

rsync配置和守護進程實踐

目錄 一、rsync概念 1.rsync簡介 2.rsync特點 3、增量和全局傳輸 二、Rsync工作方式 1.準備好rsync備份服務器 2.本地的數據傳輸模式 3.遠程的數據傳輸模式 4.rsync數據推拉模式 三、實踐 1.準備三臺虛擬機 2.都安裝rsync服務 3.拉取遠程文件 3.推送文件 4.rsyn…

Oracle用戶(User)和表空間(Tablespace)

3. 用戶和表空間 3.1. 用戶 1)概念 Oracle數據庫中,用戶(User)是訪問數據庫的途徑和認證方式,同時,用戶也是數據庫對象的邏輯集合。我們通過數據庫用戶和密碼來登錄數據庫,然后,可以在該用戶下創建和操作數據庫對象。 2)創建和配置 創建Oracle用戶,需要具備創建…

python系統編程

文章目錄 系統編程系統工具概述sys模塊os模塊 腳本運行上下文當前工作路徑命令行參數shell環境變量標準流 文件和目錄工具文件工具目錄工具 并行系統工具進程分支線程 系統編程 系統工具 概述 python系統模塊: 模塊名作用*sys負責導出與怕以后呢解釋器本身相關的組件*os包含…

Django DRF序列化器serializer

以下案例由淺到深&#xff0c;逐步深入&#xff0c;通過實例介紹了序列化器的使用方法&#xff0c;和其中遇到的常見問題的解決。 一、序列化器serializers.Serializer 1、urls.py urlpatterns [path("api/<str:version>/depart/",views.DepartView.as_vie…

緩存雪崩、擊穿、穿透及解決方案_保證緩存和數據庫一致性

文章目錄 緩存雪崩、擊穿、穿透1.緩存雪崩造成緩存雪崩解決緩存雪崩 2. 緩存擊穿造成緩存擊穿解決緩存擊穿 3.緩存穿透造成緩存穿透解決緩存穿透 更新數據時&#xff0c;如何保證數據庫和緩存的一致性&#xff1f;1. 先更新數據庫&#xff1f;先更新緩存&#xff1f;解決方案 2…

【問題解決】RuntimeError: apex.optimizers.FusedSGD requires cuda extension 問題解決

在使用 apex 庫時&#xff0c;按照官方的方式安裝后&#xff0c;雖然安裝成功&#xff0c;但調用的時候會報錯如下&#xff0c;也就是說其實沒有成功安裝可調用 cuda 的 apex&#xff1a; RuntimeError: apex.optimizers.FusedSGD requires cuda extension我找了很多解決方式&…

【藍橋杯省賽真題46】Scratch魔術表演 藍橋杯scratch圖形化編程 中小學生藍橋杯省賽真題講解

目錄 scratch魔術表演 一、題目要求 編程實現 二、案例分析 1、角色分析

微信小程序bindtap和catchtap的區別?

子元素用bindtap綁定事件后&#xff0c;執行的時候&#xff0c;會冒泡到父元素&#xff08;觸發父親元素上綁定的bindtap事件&#xff09; 如果不想冒泡到父元素&#xff0c;可以用catchtap代替 bindtap事件綁定不會阻止冒泡事件向上冒泡 catchtap事件綁定可以阻止冒泡事件向上…

centos 7.7 安裝Python-3.7.4

一、安裝PYTHON 編譯依賴包 1.1 首先安裝gcc編譯器&#xff0c;gcc有些系統版本已經默認安裝&#xff0c;通過 gcc --version 查看&#xff0c;沒安裝的先安裝gcc&#xff0c; yum -y install gcc glibc make1.2 安裝其它依賴包&#xff0c;&#xff08;注&#xff1a;不要缺…

【雙指針】和為 s 的兩個數字

和為 s 的兩個數字 文章目錄 和為 s 的兩個數字題目描述算法思路暴力枚舉雙指針 代碼編寫Java代碼C代碼編寫 LCR 179. 查找總價格為目標值的兩個商品 - 力扣&#xff08;LeetCode&#xff09; 題目描述 購物車內的商品價格按照升序記錄于數組 price。請在購物車中找到兩個商品…

Android修行手冊-超出父布局進行顯示以及超出父布局實現點擊

Unity3D特效百例案例項目實戰源碼Android-Unity實戰問題匯總游戲腳本-輔助自動化Android控件全解手冊再戰Android系列Scratch編程案例軟考全系列Unity3D學習專欄藍橋系列ChatGPT和AIGC &#x1f449;關于作者 專注于Android/Unity和各種游戲開發技巧&#xff0c;以及各種資源分…

shopee數據分析軟件丨探索Shopee數據分析軟件——知蝦

隨著電子商務的快速發展&#xff0c;越來越多的商家和企業開始關注數據分析的重要性。在這個競爭激烈的市場中&#xff0c;了解消費者行為、市場趨勢和競爭對手的策略是取得成功的關鍵。而Shopee數據分析軟件——知蝦&#xff0c;成為了許多商家和企業的首選工具。本文將深入探…

ubuntu20.04 nginx 部署靜態網頁

1、安裝nginx Ubuntu環境下安裝部署Nginx&#xff08;有網&#xff09;_ubuntu 安裝nginx_荒Huang的博客-CSDN博客 2、壓縮并上傳文件到服務器指定位置(unzip命令)&#xff0c;修改nginx配置文件&#xff0c;指定root目錄為文件的目錄&#xff0c;index 值為指定的html文件 …

【拿完年終獎后】想要轉行網絡安全,一定不要錯過這個時間段。

網絡安全&#xff0c;作為當下互聯網行業中較為熱門的崗位&#xff0c;薪資可觀、人才需求量大&#xff0c;作為轉行必考慮。 在這里奉勸所有零基礎想轉行&#xff08;入門&#xff09; 網絡安全的朋友們 在轉行之前&#xff0c;一定要對網絡安全行業做一個大概了解&#xf…

latex通過bib添加參考文獻作者名字有特殊符號如字母上有兩點亂碼解決辦法

一、背景 在使用latex寫英文論文時&#xff0c;一般是通過bib的方式添加參考文獻。但有的參考文獻作者是法國人或其他國家的&#xff0c;名字會有特殊符號&#xff0c;如某個字母上有兩個點&#xff0c;或者聲調符號等等&#xff0c;如下圖所示&#xff1a; 如果不進行特殊操作…