classSolution{ funrob(nums: IntArray): Int { val n = nums.size if (n == 0) return0 if (n == 1) return nums[0] return maxOf( linearRob(nums.copyOfRange(0, n - 1)), linearRob(nums.copyOfRange(1, n)) ) }
funlinearRob(nums: IntArray): Int { val n = nums.size if (n == 0) return0 if (n == 1) return nums[0] var pre2 = nums[0] var pre1 = maxOf(nums[0], nums[1]) var cur = pre1 for (i in2 until n) { cur = maxOf(pre1, pre2 + nums[i]) pre2 = pre1 pre1 = cur } return cur } }