From bccc78b194ef7671fe4a3252ac68f249fd826261 Mon Sep 17 00:00:00 2001 From: mhrooz Date: Mon, 3 Jun 2024 17:50:37 +0200 Subject: [PATCH] 2*dp 2*bit --- 190-240603-pass/main.py | 20 ++++++++++++++++++++ 198-240603-pass/main.py | 16 ++++++++++++++++ 64-240603-pass/main.py | 21 +++++++++++++++++++++ 66-240603-pass/main.py | 25 +++++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 190-240603-pass/main.py create mode 100644 198-240603-pass/main.py create mode 100644 64-240603-pass/main.py create mode 100644 66-240603-pass/main.py diff --git a/190-240603-pass/main.py b/190-240603-pass/main.py new file mode 100644 index 0000000..d587740 --- /dev/null +++ b/190-240603-pass/main.py @@ -0,0 +1,20 @@ +class Solution: + def reverseBits(self, n: int) -> int: + num = n + l = [] + while num != 0: + l.append(num % 2) + num //= 2 + rlt = 0 + length = len(l) + while len(l) < 32: + l.append(0) + print(l) + l.reverse() + for i, n in enumerate(l): + rlt += n * pow(2, i) + return rlt + + +sol = Solution() +print(sol.reverseBits(43261596)) diff --git a/198-240603-pass/main.py b/198-240603-pass/main.py new file mode 100644 index 0000000..42a268d --- /dev/null +++ b/198-240603-pass/main.py @@ -0,0 +1,16 @@ +class Solution: + def rob(self, nums: list[int]) -> int: + s = [] + rlt = -1e6 + for i, num in enumerate(nums): + maxi = num + for j in range(0, i - 1, 1): + maxi = max(s[j] + num, maxi) + s.append(maxi) + rlt = max(maxi, rlt) + return rlt + +sol = Solution() +print(sol.rob([1, 2, 3, 1])) +print(sol.rob([2, 7, 9, 3, 1])) +print(sol.rob([2, 7, 9, 9, 3, 1])) \ No newline at end of file diff --git a/64-240603-pass/main.py b/64-240603-pass/main.py new file mode 100644 index 0000000..be1974a --- /dev/null +++ b/64-240603-pass/main.py @@ -0,0 +1,21 @@ +class Solution: + def minPathSum(self, grid: List[List[int]]) -> int: + r = [] + for i in range(len(grid)): + r.append([]) + for i , l in enumerate(grid): + for j, num in enumerate(l): + if i == 0 and j == 0: + r[i].append(num) + continue + if i == 0: + r[i].append(num + r[i][j - 1]) + continue + if j == 0: + r[i].append(num + r[i - 1][0]) + continue + r[i].append(min(r[i - 1][j], r[i][j - 1]) + num) + width = len(grid[0]) + height = len(grid) + return r[height - 1][width - 1] + diff --git a/66-240603-pass/main.py b/66-240603-pass/main.py new file mode 100644 index 0000000..f0e094d --- /dev/null +++ b/66-240603-pass/main.py @@ -0,0 +1,25 @@ +class Solution: + def plusOne(self, digits: list[int]) -> list[int]: + flag = 1 + # x = digits[-1] + 1 + # if x == 10: + # flag = 1 + # digits[-1] = 0 + # else: + # digits[-1] = x + for i in range(len(digits) - 1, -1, -1): + x = digits[i] + flag + digits[i] = x + if x == 10: + flag = 1 + digits[i] = 0 + else: + flag = 0 + if digits[0] == 0: + digits.insert(0, 1) + return digits + +sol = Solution() +print(sol.plusOne([1, 2, 3])) +print(sol.plusOne([1, 2, 3, 4])) +print(sol.plusOne([9])) \ No newline at end of file