1def house_robber_ii(nums):
2 if len(nums) == 1:
3 return nums[0]
4
5 def rob_linear(arr):
6 prev2 = prev1 = 0
7 for value in arr:
8 prev2, prev1 = prev1, max(prev1, prev2 + value)
9 return prev1
10
11 best_excl_last = rob_linear(nums[:-1])
12 best_excl_first = rob_linear(nums[1:])
13 return max(best_excl_last, best_excl_first)