题解 | #打家劫舍(二)#
打家劫舍(二)
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 }