From 08e12f80a79f454325aa9c622998a87ce4c25e0e Mon Sep 17 00:00:00 2001 From: yeoju Date: Sat, 15 Mar 2025 01:10:42 +0900 Subject: [PATCH] FEAT : solve counting-bits, house-robber-ii --- counting-bits/aa601.py | 10 ++++++++++ house-robber-ii/aa601.py | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 counting-bits/aa601.py create mode 100644 house-robber-ii/aa601.py 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))