/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
*/
func rob( nums []int ) int {
    n := len(nums)
    if n == 1 {return nums[0]}
    return max(dp(nums, 0, n-2), dp(nums, 1, n-1))
}
func dp(nums []int, start , end int) int {
    dp1, dp2, dpi := 0, 0, 0
    for i := end; i >= start; i-- {
        dpi = max(dp1, nums[i]+ dp2)
        dp2 = dp1
        dp1 = dpi
    }
    return dpi
}
func max(a, b int) int {
    if a < b {return b}
    return a
}