题解 | #打家劫舍(二)#
打家劫舍(二)
https://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
func rob(nums []int) int {
n := len(nums)
if n == 1 {
return nums[0]
}
if n == 2 {
return max(nums[0], nums[1])
}
// 分两种情况:不偷第一家和不偷最后一家
return max(robRange(nums[1:]), robRange(nums[:n-1]))
}
func robRange(nums []int) int {
prev, curr := 0, 0
for _, num := range nums {
prev, curr = curr, max(curr, prev+num)
}
return curr
}
func max(a, b int) int {
if a > b {
return a
}
return b
}

