213. House Robber II 首尾相同的偷竊問題

[抄題]:

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are?arranged in a circle.?That means the first house is the neighbor of the last one. Meanwhile, adjacent houses have security system connected and?it will automatically contact the police if two adjacent houses were broken into on the same night.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight?without alerting the police.

Example 1:

Input: [2,3,2]
Output: 3
Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2),because they are adjacent houses.

Example 2:

Input: [1,2,3,1]
Output: 4
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).Total amount you can rob = 1 + 3 = 4.

?[暴力解法]:

時間分析:

空間分析:

?[優化后]:

時間分析:

空間分析:

[奇葩輸出條件]:

[奇葩corner case]:

[思維問題]:

不知道怎么處理首尾重復的問題:分情況討論。從0-n-1, 1-n

[英文數據結構或算法,為什么不用別的數據結構或算法]:

[一句話思路]:

exclude必須是用上一次的結果i e,否則會越加越大。所以要把上一次的結果用i e保存起來。

[輸入量]:空:?正常情況:特大:特小:程序里處理到的特殊情況:異常情況(不合法不合理的輸入):

[畫圖]:

[一刷]:

[二刷]:

[三刷]:

[四刷]:

[五刷]:

? [五分鐘肉眼debug的結果]:

[總結]:

分情況討論也是一種辦法。

[復雜度]:Time complexity: O(n) Space complexity: O(1)

[算法思想:迭代/遞歸/分治/貪心]:

[關鍵模板化代碼]:

[其他解法]:

[Follow Up]:

[LC給出的題目變變變]:

?[代碼風格] :

?[是否頭一次寫此類driver funcion的代碼] :

?[潛臺詞] :

class Solution {public int rob(int[] nums) {//corner caseif (nums == null || nums.length == 0) return 0;if (nums.length == 1) return nums[0];//discuss in 2 waysreturn Math.max(rob(nums, 0, nums.length - 2), rob(nums, 1, nums.length - 1));}public int rob(int[] nums, int low, int high) {//define include, excludeint include = 0; int exclude = 0;//for loop, define i and e, and expandfor (int j = low; j <= high; j++) {int i = include; int e = exclude;include = e + nums[j];exclude = Math.max(i, e);}//return maxreturn Math.max(include, exclude);}
}
View Code

?

轉載于:https://www.cnblogs.com/immiao0319/p/9515468.html

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

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

相關文章

原型鏈

<!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title></head><body><script> /* 原型中的默認屬性 原型鏈&#xff1a;當調用構造函數&#xff08;Fn()&a…

http --- 公開密鑰加密(非對稱加密)的幾個概念

公開密鑰加密: 公鑰加密,私鑰解密 公開密鑰加密的處理流程: 1. A準備通過互聯網向B發送數據 2. B生成公鑰P和私鑰S 3. B將P發送給A 4. A使用P進行加密,并將密文通過互聯網發送給B 5. B使用S進行解密得到數據公鑰加密的更具體的栗子: 1.B首先準備好公鑰P和私鑰S 2.B將公鑰發布…

19、20 Context API

安裝React Dev Tool Context對象.displayName 使用別名 不使用別名 React.createContext 創建指定的Context對象組件會找離自己最近的Provider&#xff0c;獲取其value變量名都叫value的情況&#xff0c;就近取AContext變量名有所區分&#xff0c;兩個value都可以獲取可以…

01-spring配置詳解

1 bean元素 <!--將User對象交給spring容器進行管理 --><!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名.name屬性:給被管理的對象起個名字.獲得對象時根據該名稱獲得對象. 可以重復.可以使用特殊字符.id屬性: 與name屬性一模一…

第八模塊:算法設計模式、企業應用 第2章 企業應用工具學習

第八模塊&#xff1a;算法&設計模式、企業應用 第2章 企業應用工具學習轉載于:https://www.cnblogs.com/tqtl911/p/9131614.html

http --- 混合加密的具體過程

混合加密: 共享加密存在一個“共享密鑰”無法安全告知服務端的問題.公開加密存在,加密、解密速度慢的問題.混合加密則同時使用了2種加密技術,具體過程如下: 1. B提前生成公鑰P和私鑰S,并將P發布到網上 2. A想(通過互聯網)像B發送數據 3. A從互聯網上獲取B的公鑰P,并使用P對共享…

Vite+Vue3頁面空白、圖標不顯示問題解決

頁面空白問題 由于項目部署在子文件夾下&#xff0c;因此需要配置vite.config.js const config {base: ./, }el-icon圖標不顯示、打包時mkdir無權限 在控制臺Network看字體圖標的請求&#xff0c;發現地址多了_assets&#xff0c;本以為需要重新配置publicDir&#xff0c;后…

在HTML打開已安裝的App,未安裝跳轉到對應的下載鏈接

借鑒 HTML中判斷手機是否安裝某APP&#xff0c;跳轉或下載該應用 function lookApp () {var ua navigator.userAgentvar isAndroid /(Android);?[\s/]([\d.])?/.test(ua)var isIpad /(iPad).*OS\s([\d_])/.test(ua)var isIpod /(iPod)(.*OS\s([\d_]))?/.test(ua)var is…

javascript --- 自定義數組的反序函數

想寫一個自定義的_reverse函數,其作用是將傳入的數組進行部分反序. 效果如下: 輸入[1,2,3,4,5,6,7,8,9] 第一個將2~4個位置的數字反序 第二個將2~6個位置的數字反序. // js function _reverse(arr, s, e) {arr arr.join().slice(0,s) arr.join().slice(s,e).split().revers…

21 Fragment和短語法應用

React.Fragment jsx語法&#xff0c;相當于document.createDocumentFragment()創建文檔碎片容器&#xff0c;優化渲染解決了沒有根節點的問題<></>這種短語法也會聲明React.Fragment但短語法不支持keyReact.Fragment只支持key屬性&#xff0c;其余屬性如事件等不支…

201521123004《軟件工程》個人閱讀作業1

task1Task2: 201521123004 林藝如 博客&#xff1a;https://www.cnblogs.com/dabaolyr/ 碼云&#xff1a;https://gitee.com/dabao_lyr Task3&#xff1a;完成博客-閱讀與思考 閱讀參考材料&#xff0c;并回答下面幾個問題&#xff1a; &#xff08;1&#xff09;回想一下你初入…

在sql當中為了讓數據做緩存做with as的操作

今天看別人的代碼&#xff0c;突然發現之前理解的sql的with as的用法有新的理解。 之前理解的with as只是想著做單表的union all 操作時才使用&#xff0c;今天發現在可以使用逗號做分割&#xff0c;做緩存不同的表數據。 下面的例子如下&#xff1a; WITH t1 AS (SELECT file_…

javascript --- 從數組中,找出比給定元素大一丁點的元素

目標如下: 從數組[1,3,2,4,5,6,7]中找到比第1個位置大一丁點的元素 function _findIndex(arr, j){let k -1;let key arr[j];for(let i j; i< arr.length; i) {if(arr[i] > key) {if( k ! -1){if(arr[i] < arr[k]) {k i;}} else {k i;}}}return k } let arr [1,…

22 React高階組件

搭建服務端 yarn add express yarn add nodemon 在server目錄下 npm init -y // 增加dev腳本"scripts": {"dev": "nodemon ./index.js"},引入 git HOC High Order Component 高階組件&#xff0c;是組件的抽象HOC不是React提供的API&#xf…

PAT (Advanced Level) 1140~1143:1140模擬 1141模擬 1142暴力 1143 BST+LCA

1140 Look-and-say Sequence&#xff08;20 分&#xff09; 題意&#xff1a;觀察序列D, D1, D111, D113, D11231, D112213111, ...&#xff0c;顯然后一個串是對前一個串每一小段連續相同的字母及其個數的描述。例如&#xff0c;D112213111是對D11231的描述&#xff0c;原因是…

AngularJS:表達式

ylbtech-AngularJS&#xff1a;表達式1.返回頂部 1、AngularJS 表達式 AngularJS 使用 表達式 把數據綁定到 HTML。 AngularJS 表達式 AngularJS 表達式寫在雙大括號內&#xff1a;{{ expression }}。 AngularJS 表達式把數據綁定到 HTML&#xff0c;這與 ng-bind 指令有異曲同…

23 Refs的應用場景與選用思考

Refs含義 允許訪問真實DOMReact數據流&#xff1a;通過props來實現父子組件的交互Refs允許強制修改子組件 // 1. 構造器離添加實例屬性 this.ref React.createRef() // 2. 組件上綁定ref ref{this.ref} // 3. 使用&#xff1a;this.ref.currentinput class MyInput extends…

flutter --- Windows下環境配置

https://flutter.liulongbin.top/ https://www.cnblogs.com/zxsh/archive/2018/04/16/8859048.html

省選模擬賽記錄(越往下越新哦~~~)

LOG 模擬賽第一次見尼瑪這么給數據范圍的……開考有點困,迷迷糊糊看完了三道題,真的是像老呂說的那樣,一道都不會……思考T1,感覺有點感覺,但是太困了,就先碼了暴力,發現打表可以50分,于是就大力打了一波表……轉身T3,碼出25分的O(n^2)算法,然后不會了……去了T2,碼出35分的O(n…

MFC-CString與int互相轉化

1. CString轉int int n 0; CString str _T("123");n _ttoi(str); 2. int轉CString int n 0; CString str; str.Format(_T(%d) , n); 參考&#xff1a;MFC中 CString與int的轉化 vs2010 中 MFC::CString 如何和int相互轉化 轉載于:https://www.cnblogs.com/Tang-…