日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

My Eighty-second Page - 打家劫舍Ⅱ - By Nicolas

發(fā)布時(shí)間:2023/12/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 My Eighty-second Page - 打家劫舍Ⅱ - By Nicolas 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這篇page是針對(duì)leetcode上的213.打家劫舍Ⅱ所寫的。小尼先簡(jiǎn)單的說明一下這道題的意思,就是我們還是以小偷的身份去進(jìn)行偷竊,我們這一次我們給出的房間的第一間和最后一間是連在一起構(gòu)成一個(gè)環(huán)形的結(jié)構(gòu),同樣我們每一個(gè)房間里面都有對(duì)應(yīng)的金額可以進(jìn)行對(duì)應(yīng)的偷取,我們需要求的就是我們?cè)诓粓?bào)警的條件下求出我們可以偷竊的最大的金額(其中觸發(fā)報(bào)警的條件跟打家劫舍一樣,就是我們?nèi)绻砩贤蹈`了連續(xù)的兩個(gè)房間,就會(huì)觸發(fā)報(bào)警)

小尼先簡(jiǎn)單的分析一下這道題的思路,其實(shí)這都題的思路還是比較簡(jiǎn)單的,其實(shí)我們可以細(xì)細(xì)的分析,我們?yōu)榱吮苊猸h(huán)結(jié)構(gòu)對(duì)我們的困擾,我們分成了三種情況,第一種就是我們只考慮不包含首尾元素的情況;第二種就是我們考慮包含首元素,不包含尾部元素的情況;第三種就是我們考慮包含尾元素,不包含首元素的情況。我們分析了之后也可以知道,我們的第一種情況其實(shí)就是包含了我們的第二種第三種情況/

小尼接下來拉一下這道題的解題的代碼:

class Solution {public int rob(int[] nums) {if (nums == null || nums.length == 0)return 0;int len = nums.length;if (len == 1)return nums[0];return Math.max(robAction(nums, 0, len - 1), robAction(nums, 1, len));}int robAction(int[] nums, int start, int end) {int x = 0, y = 0, z = 0;for (int i = start; i < end; i++) {y = z;z = Math.max(y, x + nums[i]);x = y;}return z;} }

其實(shí)這道題的解法也是有巧妙之處,我們先排除了特殊的情況,然后我們?cè)陂_始做了判斷,我們求出了兩種情況下的二值再取兩者中的最大值,我們?cè)谌≈档膄or循環(huán)中,其中有一點(diǎn)運(yùn)用的非常巧妙,我們這里定義了x,y,z三個(gè)值,這三個(gè)值小尼一一跟大家說明一下它們的作用以及記錄的是哪些值,x永遠(yuǎn)記錄的都是最前面的值,我們的i在不斷往后遍歷取nums[i]的時(shí)候,我們的x都是與i取到的nums[i]相隔一個(gè)位置的距離,這樣我們的x+nums[i]才可以表示我們偷取了之后的值,然后y記錄的一直都是x之后,nums[i]之前的那個(gè)值,我們?cè)谄渲衵表示最后的結(jié)果,比較的就是其中y與x+nums[i]的值

總結(jié)

以上是生活随笔為你收集整理的My Eighty-second Page - 打家劫舍Ⅱ - By Nicolas的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。