mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 04:54:51 +08:00
更新0213.打家劫舍II.md 更简洁的python 版本
This commit is contained in:
@ -123,22 +123,24 @@ Python:
|
|||||||
```Python
|
```Python
|
||||||
class Solution:
|
class Solution:
|
||||||
def rob(self, nums: List[int]) -> int:
|
def rob(self, nums: List[int]) -> int:
|
||||||
if (n := len(nums)) == 0:
|
#在198入门级的打家劫舍问题上分两种情况考虑
|
||||||
return 0
|
#一是不偷第一间房,二是不偷最后一间房
|
||||||
if n == 1:
|
if len(nums)==1:#题目中提示nums.length>=1,所以不需要考虑len(nums)==0的情况
|
||||||
return nums[0]
|
return nums[0]
|
||||||
result1 = self.robRange(nums, 0, n - 2)
|
val1=self.roblist(nums[1:])#不偷第一间房
|
||||||
result2 = self.robRange(nums, 1, n - 1)
|
val2=self.roblist(nums[:-1])#不偷最后一间房
|
||||||
return max(result1 , result2)
|
return max(val1,val2)
|
||||||
|
|
||||||
def robRange(self, nums: List[int], start: int, end: int) -> int:
|
def robRange(self,nums):
|
||||||
if end == start: return nums[start]
|
l=len(nums)
|
||||||
dp = [0] * len(nums)
|
dp=[0]*l
|
||||||
dp[start] = nums[start]
|
dp[0]=nums[0]
|
||||||
dp[start + 1] = max(nums[start], nums[start + 1])
|
for i in range(1,l):
|
||||||
for i in range(start + 2, end + 1):
|
if i==1:
|
||||||
dp[i] = max(dp[i -2] + nums[i], dp[i - 1])
|
dp[i]=max(dp[i-1],nums[i])
|
||||||
return dp[end]
|
else:
|
||||||
|
dp[i]=max(dp[i-1],dp[i-2]+nums[i])
|
||||||
|
return dp[-1]
|
||||||
```
|
```
|
||||||
|
|
||||||
javascipt:
|
javascipt:
|
||||||
|
Reference in New Issue
Block a user