91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中打家劫舍的示例分析

發布時間:2022-01-17 14:49:42 來源:億速云 閱讀:149 作者:清風 欄目:大數據

本文將為大家詳細介紹“java中打家劫舍的示例分析”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“java中打家劫舍的示例分析”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。

你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第一個房屋和最后一個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。

給定一個代表每個房屋存放金額的非負整數數組,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

示例 1:

輸入: [2,3,2]
輸出: 3
解釋: 你不能先偷竊 1 號房屋(金額 = 2),然后偷竊 3 號房屋(金額 = 2), 因為他們是相鄰的。

示例 2:

輸入: [1,2,3,1]
輸出: 4
解釋: 你可以先偷竊 1 號房屋(金額 = 1),然后偷竊 3 號房屋(金額 = 3)。     偷竊到的最高金額 = 1 + 3 = 4 。

答案:

 1public int rob(int[] nums) {
2    if (nums.length == 1)
3        return nums[0];
4    return Math.max(robHelper(nums, 0, nums.length - 2), robHelper(nums, 1, nums.length - 1));
5}
6
7private int robHelper(int[] num, int lo, int hi) {
8    int now = 0, last = 0;
9    for (int j = lo; j <= hi; j++) {
10        int temp = now;
11        now = Math.max(last + num[j], now);
12        last = temp;
13    }
14    return now;
15}

解析:

前面講過一個和這非常相似的題152,打家劫舍,但這個題和之前的不同的是房屋構成了一個環形,如果我們已經偷了第一個的話,肯定是不能再偷最后一個的。這里可能不太好理解的是robHelper中的代碼,now每循環一次都會讓now原來的值賦值給last,所以每次計算now的新值之前都會先把now的舊值保存在temp中。now永遠保證的是偷竊的最大值。這是一道動態規劃題,其實我們只需要計算Math.max(rob(i-2)+num[i],rob(i-1))即可。他的思想就是我偷當前這家和不偷當前這家哪個價值最大。

Java的特點有哪些

Java的特點有哪些 1.Java語言作為靜態面向對象編程語言的代表,實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

感謝您能讀到這里,小編希望您對“java中打家劫舍的示例分析”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乳源| 安达市| 石狮市| 十堰市| 遂溪县| 中牟县| 平果县| 卢湾区| 天峨县| 建湖县| 清新县| 连山| 萝北县| 谢通门县| 滨海县| 泸州市| 鹿邑县| 吉水县| 靖州| 武清区| 南通市| 眉山市| 西吉县| 文安县| 武宣县| 开鲁县| 津南区| 安平县| 呼图壁县| 卢龙县| 太保市| 府谷县| 江口县| 新建县| 梨树县| 体育| 来凤县| 太湖县| 工布江达县| 德令哈市| 彭山县|