House Robber II

题目描述

This time, all houses at this place are arranged in a circle.

解题方法

连成圈也就是说明第一间和最后一件不能同时抢,一开始想如何在转换方程里体现出来,并没有什么思路。 后来看了别人的Blog,其实就将它们分成不包含第一间和不包含最后一间的两个array就可以了。

Solution

class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        if len(nums) == 1:
            return nums[0]
        return max(self.rob1(nums[:-1]), self.rob1(nums[1:]))

Reference