| 12345678910111213141516171819202122232425 | func rob(nums []int) int {	n := len(nums)	if n == 0 {		return 0	} else if n == 1 {		return nums[0]	}	dp := make([][]int, 2) // dp[0][i]: pick first element; dp[1][i]: do not pick.	for i := range dp {		dp[i] = make([]int, n)	}	dp[0][1] = nums[0]	for i := 2; i < n; i++ {		dp[0][i] = maxInt(dp[0][i-1], nums[i-1]+dp[0][i-2])		dp[1][i] = maxInt(dp[1][i-1], nums[i-1]+dp[1][i-2])	}	return maxInt(dp[0][n-1], maxInt(dp[1][n-2]+nums[n-1], dp[1][n-1]))}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |