1. 程式人生 > >LeetCode213——打家劫舍II

LeetCode213——打家劫舍II

題目描述:

知識點:動態規劃

基本思路:

第一個房屋和最後一個房屋是緊挨著的,說明第一個房屋和最後一個房屋不能同時盜取。我們可以考慮兩種情況:

(1)考慮偷取[0, n - 2]的房屋。

(2)考慮偷取[1, n - 1]的房屋。

JAVA程式碼:

public int rob(int[] nums) {
		int n = nums.length;
		if(n == 0) {
			return 0;
		}
        if(n == 1) {
			return nums[0]; 
		}
		//sum[i]:考慮偷取[0, i]範圍內的房子
		//1.先考慮偷取[0, n - 2]的房子
		int[] sum = new int[n - 1];
		sum[0] = nums[0];
		for (int i = 1; i < n - 1; i++) {
			sum[i] = 0;
			for (int j = 0; j <= i; j++) {
				if(j >= 2) {
					sum[i] = Math.max(sum[i], sum[j - 2] + nums[j]);
				}else {
					sum[i] = Math.max(sum[i], nums[j]);
				}
			}
		}
		int result1 = sum[n - 2];
		//2.再考慮偷取[1, n - 1]的房子
		int[] sum2 = new int[n];
		sum2[1] = nums[1];
		for (int i = 2; i < n; i++) {
			sum2[i] = 0;
			for (int j = 1; j <= i; j++) {
				if(j >= 3) {
					sum2[i] = Math.max(sum2[i], sum2[j - 2] + nums[j]);
				}else {
					sum2[i] = Math.max(sum2[i], nums[j]);
				}
			}
		}
		int result2 = sum2[n - 1];
		return Math.max(result1, result2);
	}

複雜度分析:

本題只不過相當於做了兩次LeetCode198——打家劫舍的過程,因此時間複雜度和空間複雜度均與LeetCode198——打家劫舍相同。

時間複雜度:O(n ^ 2)

空間複雜度:O(n)

相關推薦

[Swift]LeetCode213. 打家劫舍 II | 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 ar

LeetCode213——打家劫舍II

題目描述: 知識點:動態規劃 基本思路: 第一個房屋和最後一個房屋是緊挨著的,說明第一個房屋和最後一個房屋不能同時盜取。我們可以考慮兩種情況: (1)考慮偷取[0, n - 2]的房屋。 (2)考慮偷取[1, n - 1]的房屋。 JAVA程式碼:

213 House Robber II 打家劫舍 II

n-1 tco logs emp 數列 ++ 一個 pty cnblogs 註意事項: 這是 打家劫舍 的延伸。在上次盜竊完一條街道之後,竊賊又轉到了一個新的地方,這樣他就不會引起太多註意。這一次,這個地方的所有房屋都圍成一圈。這意味著第一個房子是最後一個是緊挨著的。同時,

213. 打家劫舍 II

pan 解釋 pre AS 但是 nbsp 如果 num 連通 你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第一個房屋和最後一個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被

#動態規劃 LeetCode 213 打家劫舍 II

界定 pre col class targe 狀態轉移方程 你是 code www 你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第一個房屋和最後一個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相

213.打家劫舍II

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

【LeetCode】 213. 打家劫舍 II

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

leetcode 213. 打家劫舍II

題目描述: 你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第一個房屋和最後一個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個房屋存放金額的非負整數陣列

leetcode---213. 打家劫舍 II

https://leetcode-cn.com/problems/house-robber-ii/ 你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第一個房屋和最後一個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房

LeetCode 213. 打家劫舍 II(C++、python)

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

213,打家劫舍II

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

【Leetcode_總結】213. 打家劫舍 II - python

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

【Leetcode】打家劫舍 I and 打家劫舍 II(動態規劃)PYTHON

198.打家劫舍 題目表述: 你是一個專業的強盜,計劃搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡警方。 給定一個代表每個房屋的金額的非負整數列表,確定

Leetcode 213:打家劫舍 II(最詳細的解法!!!)

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

【LeetCode】213. 打家劫舍 II——dp

題目 解答 和之前的198.打家劫舍類似,但有個限制就是陣列首尾相鄰,因此分兩種情況:從0開始和從1開始。 程式碼中dp1代表從0開始,dp2代表從1開始,均有如下狀態轉移方程: f(n) = max{f(n-1), f(n-2)+nums(n)} (

213. 打家劫舍 II -M

213. 打家劫舍 II 你是一個專業的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的現金。這個 地方所有的房屋都圍成一圈,這意味著第一個房屋和最後一個房屋是緊挨著的。 同時,相鄰的房屋裝有相互

【LeetCode】213. 打家劫舍 II 結題報告 (C++)

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

LeetCode 213. 打家劫舍 II

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

LeetCode213. House Robber II

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. A

Leetcode 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&