tianyun 3 jaren geleden
bovenliggende
commit
2f2895b2a6

+ 42 - 0
leetcode/1254. 统计封闭岛屿的数目.py

@@ -0,0 +1,42 @@
+from typing import List
+
+
+class Solution:
+    def closedIsland(self, grid: List[List[int]]) -> int:
+        res = 0
+        m, n = len(grid), len(grid[0]),
+        for i in range(m):
+            self.dfs(grid, i, 0)
+            self.dfs(grid, i, n - 1)
+        for j in range(n):
+            self.dfs(grid, 0, j)
+            self.dfs(grid, m - 1, j)
+        for i in range(m):
+            for j in range(n):
+                if grid[i][j] == 0:
+                    res += 1
+                    self.dfs(grid, i, j)
+        return res
+        pass
+
+    def dfs(self, grid: List[List[int]], i: int, j: int):
+        m, n = len(grid), len(grid[0]),
+        if i < 0 or j < 0 or i >= m or j >= n:
+            return
+        if grid[i][j] == 1:
+            return
+        grid[i][j] = 1
+        self.dfs(grid, i + 1, j)
+        self.dfs(grid, i - 1, j)
+        self.dfs(grid, i, j + 1)
+        self.dfs(grid, i, j - 1)
+        pass
+
+
+if __name__ == '__main__':
+    print(Solution().closedIsland(
+        [[1, 1, 1, 1, 1, 1, 1, 0],
+         [1, 0, 0, 0, 0, 1, 1, 0],
+         [1, 0, 1, 0, 1, 1, 1, 0],
+         [1, 0, 0, 0, 0, 1, 0, 1],
+         [1, 1, 1, 1, 1, 1, 1, 0]]))

+ 34 - 0
leetcode/200岛屿数量.py

@@ -0,0 +1,34 @@
+from typing import List
+
+
+class Solution:
+    def numIslands(self, grid: List[List[str]]) -> int:
+        num = 0
+        m, n = len(grid), len(grid[0])
+        for i in range(m):
+            for j in range(n):
+                if grid[i][j] == '1':
+                    num += 1
+                    self.dfs(grid, i, j)
+        return num
+
+    def dfs(self, grid: List[List[str]], i: int, j: int):
+        m, n = len(grid), len(grid[0])
+        if i < 0 or j < 0 or i >= m or j >= n:
+            return
+        if grid[i][j] == '0':
+            return
+        grid[i][j] = "0"
+        self.dfs(grid, i - 1, j)
+        self.dfs(grid, i + 1, j)
+        self.dfs(grid, i, j - 1)
+        self.dfs(grid, i, j + 1)
+
+
+if __name__ == '__main__':
+    print(Solution().numIslands([
+        ["1", "1", "0", "0", "0"],
+        ["1", "1", "0", "0", "0"],
+        ["0", "0", "1", "0", "0"],
+        ["0", "0", "0", "1", "1"]
+    ]))

+ 22 - 0
leetcode/42. 接雨水.py

@@ -0,0 +1,22 @@
+from typing import List
+
+
+class Solution:
+    def trap(self, height: List[int]) -> int:
+        res = 0
+        left, right = 0, len(height) - 1
+        lMax, rMax = 0, 0
+        while left < right:
+            lMax = max(lMax, height[left])
+            rMax = max(rMax, height[right])
+            if lMax < rMax:
+                res += lMax - height[left]
+                left += 1
+            else:
+                res += rMax - height[right]
+                right -= 1
+        return res
+
+
+if __name__ == '__main__':
+    print(Solution().trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]))

+ 23 - 0
leetcode/496. 下一个更大元素 I.py

@@ -0,0 +1,23 @@
+from typing import List
+
+
+class Solution:
+    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
+        res = []
+        num2_dict = {}
+        for i in range(len(nums2)):
+            num2_dict[nums2[i]] = i
+        for x in nums1:
+            exist = False
+            for j in range(num2_dict[x], len(nums2)):
+                if nums2[j] > x:
+                    res.append(nums2[j])
+                    exist = True
+                    break
+            if not exist:
+                res.append(-1)
+        return res
+
+
+if __name__ == '__main__':
+    print(Solution().nextGreaterElement([4, 1, 2], [1, 3, 4, 2]))

+ 16 - 0
leetcode/剑指 Offer 27. 二叉树的镜像.py

@@ -0,0 +1,16 @@
+# Definition for a binary tree node.
+class TreeNode:
+    def __init__(self, x):
+        self.val = x
+        self.left = None
+        self.right = None
+
+
+class Solution:
+    def mirrorTree(self, root: TreeNode) -> TreeNode:
+        if not root:
+            return
+        root.left, root.right = root.right, root.left
+        self.mirrorTree(root.left)
+        self.mirrorTree(root.right)
+        return root

+ 15 - 8
tmp.py

@@ -1,8 +1,15 @@
-import os
-
-with open("data.csv", "w") as f:
-    f.write("id,name,price1,description,insert_time")
-    f.write(os.linesep)
-    for i in range(480000):
-        f.write(f"{i},苹果,4.25,商品价格,2022-04-19 10:00:00")
-        f.write(os.linesep)
+import base64
+
+
+def get_bucket_value(id_str: str):
+    base64_value = base64.b64encode(id_str.encode("UTF-8"))
+    hash_value = abs(hash(base64_value))
+    return hash_value % 100
+
+
+print(get_bucket_value("1"))
+# print(get_bucket_value("2"))
+# print(get_bucket_value("3"))
+# print(get_bucket_value("4"))
+# print(get_bucket_value("5"))
+# print(get_bucket_value("6"))