diff --git a/counting-bits/aa601.py b/counting-bits/aa601.py new file mode 100644 index 000000000..a81bc938d --- /dev/null +++ b/counting-bits/aa601.py @@ -0,0 +1,10 @@ +''' +TC: O(n) +SC: O(n) +''' +class Solution: + def countBits(self, n: int) -> List[int]: + dp = [0] * (n + 1) + for num in range(1, n + 1): + dp[num] = dp[num // 2] + num % 2 + return dp diff --git a/house-robber-ii/aa601.py b/house-robber-ii/aa601.py new file mode 100644 index 000000000..3e9ed945e --- /dev/null +++ b/house-robber-ii/aa601.py @@ -0,0 +1,15 @@ +''' +TC : O(n) +SC : O(1) +''' +class Solution: + def rob(self, nums: List[int]) -> int: + if len(nums) == 1: + return nums[0] + + def dp(start, end): + prv, cur = 0, 0 + for idx in range(start, end): + prv, cur = cur, max(prv + nums[idx], cur) + return cur + return max(dp(1, len(nums)), dp(0, len(nums) - 1))