mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 22:28:40 +08:00 
			
		
		
		
	Simplify the declarations of the Python code.
This commit is contained in:
		@ -70,9 +70,9 @@ def find(nums: list[int], target: int) -> int:
 | 
				
			|||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    # 初始化数组
 | 
					    # 初始化数组
 | 
				
			||||||
    arr: list[int] = [0] * 5
 | 
					    arr = [0] * 5
 | 
				
			||||||
    print("数组 arr =", arr)
 | 
					    print("数组 arr =", arr)
 | 
				
			||||||
    nums: list[int] = [1, 3, 2, 5, 4]
 | 
					    nums = [1, 3, 2, 5, 4]
 | 
				
			||||||
    print("数组 nums =", nums)
 | 
					    print("数组 nums =", nums)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 随机访问
 | 
					    # 随机访问
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ Author: Krahets (krahets@163.com)
 | 
				
			|||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    # 初始化列表
 | 
					    # 初始化列表
 | 
				
			||||||
    arr: list[int] = [1, 3, 2, 5, 4]
 | 
					    arr = [1, 3, 2, 5, 4]
 | 
				
			||||||
    print("列表 arr =", arr)
 | 
					    print("列表 arr =", arr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 访问元素
 | 
					    # 访问元素
 | 
				
			||||||
@ -39,17 +39,17 @@ if __name__ == "__main__":
 | 
				
			|||||||
    print("删除索引 3 处的元素,得到 arr =", arr)
 | 
					    print("删除索引 3 处的元素,得到 arr =", arr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 通过索引遍历列表
 | 
					    # 通过索引遍历列表
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    for i in range(len(arr)):
 | 
					    for i in range(len(arr)):
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 直接遍历列表元素
 | 
					    # 直接遍历列表元素
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    for n in arr:
 | 
					    for n in arr:
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 拼接两个列表
 | 
					    # 拼接两个列表
 | 
				
			||||||
    arr1: list[int] = [6, 8, 7, 10, 9]
 | 
					    arr1 = [6, 8, 7, 10, 9]
 | 
				
			||||||
    arr += arr1
 | 
					    arr += arr1
 | 
				
			||||||
    print("将列表 arr1 拼接到 arr 之后,得到 arr =", arr)
 | 
					    print("将列表 arr1 拼接到 arr 之后,得到 arr =", arr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,9 @@ def undo_choice(state: list[TreeNode], choice: TreeNode):
 | 
				
			|||||||
    state.pop()
 | 
					    state.pop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def backtrack(state: list[TreeNode], choices: list[TreeNode], res: list[list[TreeNode]]):
 | 
					def backtrack(
 | 
				
			||||||
 | 
					    state: list[TreeNode], choices: list[TreeNode], res: list[list[TreeNode]]
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
    """回溯算法:例题三"""
 | 
					    """回溯算法:例题三"""
 | 
				
			||||||
    # 检查是否为解
 | 
					    # 检查是否为解
 | 
				
			||||||
    if is_solution(state):
 | 
					    if is_solution(state):
 | 
				
			||||||
 | 
				
			|||||||
@ -19,12 +19,12 @@ def function() -> int:
 | 
				
			|||||||
def constant(n: int) -> None:
 | 
					def constant(n: int) -> None:
 | 
				
			||||||
    """常数阶"""
 | 
					    """常数阶"""
 | 
				
			||||||
    # 常量、变量、对象占用 O(1) 空间
 | 
					    # 常量、变量、对象占用 O(1) 空间
 | 
				
			||||||
    a: int = 0
 | 
					    a = 0
 | 
				
			||||||
    nums: list[int] = [0] * 10000
 | 
					    nums = [0] * 10000
 | 
				
			||||||
    node = ListNode(0)
 | 
					    node = ListNode(0)
 | 
				
			||||||
    # 循环中的变量占用 O(1) 空间
 | 
					    # 循环中的变量占用 O(1) 空间
 | 
				
			||||||
    for _ in range(n):
 | 
					    for _ in range(n):
 | 
				
			||||||
        c: int = 0
 | 
					        c = 0
 | 
				
			||||||
    # 循环中的函数占用 O(1) 空间
 | 
					    # 循环中的函数占用 O(1) 空间
 | 
				
			||||||
    for _ in range(n):
 | 
					    for _ in range(n):
 | 
				
			||||||
        function()
 | 
					        function()
 | 
				
			||||||
@ -33,7 +33,7 @@ def constant(n: int) -> None:
 | 
				
			|||||||
def linear(n: int) -> None:
 | 
					def linear(n: int) -> None:
 | 
				
			||||||
    """线性阶"""
 | 
					    """线性阶"""
 | 
				
			||||||
    # 长度为 n 的列表占用 O(n) 空间
 | 
					    # 长度为 n 的列表占用 O(n) 空间
 | 
				
			||||||
    nums: list[int] = [0] * n
 | 
					    nums = [0] * n
 | 
				
			||||||
    # 长度为 n 的哈希表占用 O(n) 空间
 | 
					    # 长度为 n 的哈希表占用 O(n) 空间
 | 
				
			||||||
    mapp = dict[int, str]()
 | 
					    mapp = dict[int, str]()
 | 
				
			||||||
    for i in range(n):
 | 
					    for i in range(n):
 | 
				
			||||||
@ -51,7 +51,7 @@ def linear_recur(n: int) -> None:
 | 
				
			|||||||
def quadratic(n: int) -> None:
 | 
					def quadratic(n: int) -> None:
 | 
				
			||||||
    """平方阶"""
 | 
					    """平方阶"""
 | 
				
			||||||
    # 二维列表占用 O(n^2) 空间
 | 
					    # 二维列表占用 O(n^2) 空间
 | 
				
			||||||
    num_matrix: list[list[int]] = [[0] * n for _ in range(n)]
 | 
					    num_matrix = [[0] * n for _ in range(n)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def quadratic_recur(n: int) -> int:
 | 
					def quadratic_recur(n: int) -> int:
 | 
				
			||||||
@ -59,7 +59,7 @@ def quadratic_recur(n: int) -> int:
 | 
				
			|||||||
    if n <= 0:
 | 
					    if n <= 0:
 | 
				
			||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
    # 数组 nums 长度为 n, n-1, ..., 2, 1
 | 
					    # 数组 nums 长度为 n, n-1, ..., 2, 1
 | 
				
			||||||
    nums: list[int] = [0] * n
 | 
					    nums = [0] * n
 | 
				
			||||||
    return quadratic_recur(n - 1)
 | 
					    return quadratic_recur(n - 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,8 +7,8 @@ Author: Krahets (krahets@163.com)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def constant(n: int) -> int:
 | 
					def constant(n: int) -> int:
 | 
				
			||||||
    """常数阶"""
 | 
					    """常数阶"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    size: int = 100000
 | 
					    size = 100000
 | 
				
			||||||
    for _ in range(size):
 | 
					    for _ in range(size):
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
    return count
 | 
					    return count
 | 
				
			||||||
@ -16,7 +16,7 @@ def constant(n: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def linear(n: int) -> int:
 | 
					def linear(n: int) -> int:
 | 
				
			||||||
    """线性阶"""
 | 
					    """线性阶"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    for _ in range(n):
 | 
					    for _ in range(n):
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
    return count
 | 
					    return count
 | 
				
			||||||
@ -24,7 +24,7 @@ def linear(n: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def array_traversal(nums: list[int]) -> int:
 | 
					def array_traversal(nums: list[int]) -> int:
 | 
				
			||||||
    """线性阶(遍历数组)"""
 | 
					    """线性阶(遍历数组)"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    # 循环次数与数组长度成正比
 | 
					    # 循环次数与数组长度成正比
 | 
				
			||||||
    for num in nums:
 | 
					    for num in nums:
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
@ -33,7 +33,7 @@ def array_traversal(nums: list[int]) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def quadratic(n: int) -> int:
 | 
					def quadratic(n: int) -> int:
 | 
				
			||||||
    """平方阶"""
 | 
					    """平方阶"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    # 循环次数与数组长度成平方关系
 | 
					    # 循环次数与数组长度成平方关系
 | 
				
			||||||
    for i in range(n):
 | 
					    for i in range(n):
 | 
				
			||||||
        for j in range(n):
 | 
					        for j in range(n):
 | 
				
			||||||
@ -43,7 +43,7 @@ def quadratic(n: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def bubble_sort(nums: list[int]) -> int:
 | 
					def bubble_sort(nums: list[int]) -> int:
 | 
				
			||||||
    """平方阶(冒泡排序)"""
 | 
					    """平方阶(冒泡排序)"""
 | 
				
			||||||
    count: int = 0  # 计数器
 | 
					    count = 0  # 计数器
 | 
				
			||||||
    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
					    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
				
			||||||
    for i in range(len(nums) - 1, 0, -1):
 | 
					    for i in range(len(nums) - 1, 0, -1):
 | 
				
			||||||
        # 内循环:冒泡操作
 | 
					        # 内循环:冒泡操作
 | 
				
			||||||
@ -59,8 +59,8 @@ def bubble_sort(nums: list[int]) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def exponential(n: int) -> int:
 | 
					def exponential(n: int) -> int:
 | 
				
			||||||
    """指数阶(循环实现)"""
 | 
					    """指数阶(循环实现)"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    base: int = 1
 | 
					    base = 1
 | 
				
			||||||
    # cell 每轮一分为二,形成数列 1, 2, 4, 8, ..., 2^(n-1)
 | 
					    # cell 每轮一分为二,形成数列 1, 2, 4, 8, ..., 2^(n-1)
 | 
				
			||||||
    for _ in range(n):
 | 
					    for _ in range(n):
 | 
				
			||||||
        for _ in range(base):
 | 
					        for _ in range(base):
 | 
				
			||||||
@ -79,7 +79,7 @@ def exp_recur(n: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def logarithmic(n: float) -> int:
 | 
					def logarithmic(n: float) -> int:
 | 
				
			||||||
    """对数阶(循环实现)"""
 | 
					    """对数阶(循环实现)"""
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    while n > 1:
 | 
					    while n > 1:
 | 
				
			||||||
        n = n / 2
 | 
					        n = n / 2
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
@ -107,7 +107,7 @@ def factorial_recur(n: int) -> int:
 | 
				
			|||||||
    """阶乘阶(递归实现)"""
 | 
					    """阶乘阶(递归实现)"""
 | 
				
			||||||
    if n == 0:
 | 
					    if n == 0:
 | 
				
			||||||
        return 1
 | 
					        return 1
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    # 从 1 个分裂出 n 个
 | 
					    # 从 1 个分裂出 n 个
 | 
				
			||||||
    for _ in range(n):
 | 
					    for _ in range(n):
 | 
				
			||||||
        count += factorial_recur(n - 1)
 | 
					        count += factorial_recur(n - 1)
 | 
				
			||||||
@ -130,7 +130,7 @@ if __name__ == "__main__":
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    count: int = quadratic(n)
 | 
					    count: int = quadratic(n)
 | 
				
			||||||
    print("平方阶的计算操作数量 =", count)
 | 
					    print("平方阶的计算操作数量 =", count)
 | 
				
			||||||
    nums: list[int] = [i for i in range(n, 0, -1)]  # [n,n-1,...,2,1]
 | 
					    nums = [i for i in range(n, 0, -1)]  # [n, n-1, ..., 2, 1]
 | 
				
			||||||
    count: int = bubble_sort(nums)
 | 
					    count: int = bubble_sort(nums)
 | 
				
			||||||
    print("平方阶(冒泡排序)的计算操作数量 =", count)
 | 
					    print("平方阶(冒泡排序)的计算操作数量 =", count)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ import random
 | 
				
			|||||||
def random_numbers(n: int) -> list[int]:
 | 
					def random_numbers(n: int) -> list[int]:
 | 
				
			||||||
    """生成一个数组,元素为: 1, 2, ..., n ,顺序被打乱"""
 | 
					    """生成一个数组,元素为: 1, 2, ..., n ,顺序被打乱"""
 | 
				
			||||||
    # 生成数组 nums =: 1, 2, 3, ..., n
 | 
					    # 生成数组 nums =: 1, 2, 3, ..., n
 | 
				
			||||||
    nums: list[int] = [i for i in range(1, n + 1)]
 | 
					    nums = [i for i in range(1, n + 1)]
 | 
				
			||||||
    # 随机打乱数组元素
 | 
					    # 随机打乱数组元素
 | 
				
			||||||
    random.shuffle(nums)
 | 
					    random.shuffle(nums)
 | 
				
			||||||
    return nums
 | 
					    return nums
 | 
				
			||||||
@ -29,7 +29,7 @@ def find_one(nums: list[int]) -> int:
 | 
				
			|||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    for i in range(10):
 | 
					    for i in range(10):
 | 
				
			||||||
        n: int = 100
 | 
					        n = 100
 | 
				
			||||||
        nums: list[int] = random_numbers(n)
 | 
					        nums: list[int] = random_numbers(n)
 | 
				
			||||||
        index: int = find_one(nums)
 | 
					        index: int = find_one(nums)
 | 
				
			||||||
        print("\n数组 [ 1, 2, ..., n ] 被打乱后 =", nums)
 | 
					        print("\n数组 [ 1, 2, ..., n ] 被打乱后 =", nums)
 | 
				
			||||||
 | 
				
			|||||||
@ -88,8 +88,8 @@ class GraphAdjMat:
 | 
				
			|||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    # 初始化无向图
 | 
					    # 初始化无向图
 | 
				
			||||||
    # 请注意,edges 元素代表顶点索引,即对应 vertices 元素索引
 | 
					    # 请注意,edges 元素代表顶点索引,即对应 vertices 元素索引
 | 
				
			||||||
    vertices: list[int] = [1, 3, 2, 5, 4]
 | 
					    vertices = [1, 3, 2, 5, 4]
 | 
				
			||||||
    edges: list[list[int]] = [[0, 1], [0, 3], [1, 2], [2, 3], [2, 4], [3, 4]]
 | 
					    edges = [[0, 1], [0, 3], [1, 2], [2, 3], [2, 4], [3, 4]]
 | 
				
			||||||
    graph = GraphAdjMat(vertices, edges)
 | 
					    graph = GraphAdjMat(vertices, edges)
 | 
				
			||||||
    print("\n初始化后,图为")
 | 
					    print("\n初始化后,图为")
 | 
				
			||||||
    graph.print()
 | 
					    graph.print()
 | 
				
			||||||
 | 
				
			|||||||
@ -23,7 +23,7 @@ class ArrayHashMap:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def hash_func(self, key: int) -> int:
 | 
					    def hash_func(self, key: int) -> int:
 | 
				
			||||||
        """哈希函数"""
 | 
					        """哈希函数"""
 | 
				
			||||||
        index: int = key % 100
 | 
					        index = key % 100
 | 
				
			||||||
        return index
 | 
					        return index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get(self, key: int) -> str:
 | 
					    def get(self, key: int) -> str:
 | 
				
			||||||
@ -56,7 +56,7 @@ class ArrayHashMap:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def key_set(self) -> list[int]:
 | 
					    def key_set(self) -> list[int]:
 | 
				
			||||||
        """获取所有键"""
 | 
					        """获取所有键"""
 | 
				
			||||||
        result: list[int] = []
 | 
					        result = []
 | 
				
			||||||
        for pair in self.buckets:
 | 
					        for pair in self.buckets:
 | 
				
			||||||
            if pair is not None:
 | 
					            if pair is not None:
 | 
				
			||||||
                result.append(pair.key)
 | 
					                result.append(pair.key)
 | 
				
			||||||
@ -64,7 +64,7 @@ class ArrayHashMap:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def value_set(self) -> list[str]:
 | 
					    def value_set(self) -> list[str]:
 | 
				
			||||||
        """获取所有值"""
 | 
					        """获取所有值"""
 | 
				
			||||||
        result: list[str] = []
 | 
					        result = []
 | 
				
			||||||
        for pair in self.buckets:
 | 
					        for pair in self.buckets:
 | 
				
			||||||
            if pair is not None:
 | 
					            if pair is not None:
 | 
				
			||||||
                result.append(pair.val)
 | 
					                result.append(pair.val)
 | 
				
			||||||
 | 
				
			|||||||
@ -64,7 +64,7 @@ if __name__ == "__main__":
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # 输入列表并建堆
 | 
					    # 输入列表并建堆
 | 
				
			||||||
    # 时间复杂度为 O(n) ,而非 O(nlogn)
 | 
					    # 时间复杂度为 O(n) ,而非 O(nlogn)
 | 
				
			||||||
    min_heap: list[int] = [1, 3, 2, 5, 4]
 | 
					    min_heap = [1, 3, 2, 5, 4]
 | 
				
			||||||
    heapq.heapify(min_heap)
 | 
					    heapq.heapify(min_heap)
 | 
				
			||||||
    print("\n输入列表并建立小顶堆后")
 | 
					    print("\n输入列表并建立小顶堆后")
 | 
				
			||||||
    print_heap(min_heap)
 | 
					    print_heap(min_heap)
 | 
				
			||||||
 | 
				
			|||||||
@ -40,8 +40,8 @@ def binary_search_lcro(nums: list[int], target: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    target: int = 6
 | 
					    target = 6
 | 
				
			||||||
    nums: list[int] = [1, 3, 6, 8, 12, 15, 23, 26, 31, 35]
 | 
					    nums = [1, 3, 6, 8, 12, 15, 23, 26, 31, 35]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 二分查找(双闭区间)
 | 
					    # 二分查找(双闭区间)
 | 
				
			||||||
    index: int = binary_search(nums, target)
 | 
					    index: int = binary_search(nums, target)
 | 
				
			||||||
 | 
				
			|||||||
@ -41,8 +41,8 @@ def binary_search_right_edge(nums: list[int], target: int) -> int:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    target: int = 6
 | 
					    target = 6
 | 
				
			||||||
    nums: list[int] = [1, 3, 6, 6, 6, 6, 6, 10, 12, 15]
 | 
					    nums = [1, 3, 6, 6, 6, 6, 6, 10, 12, 15]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 二分查找最左一个元素
 | 
					    # 二分查找最左一个元素
 | 
				
			||||||
    index_left = binary_search_left_edge(nums, target)
 | 
					    index_left = binary_search_left_edge(nums, target)
 | 
				
			||||||
 | 
				
			|||||||
@ -28,10 +28,10 @@ def hashing_search_linkedlist(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    target: int = 3
 | 
					    target = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 哈希查找(数组)
 | 
					    # 哈希查找(数组)
 | 
				
			||||||
    nums: list[int] = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]
 | 
					    nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]
 | 
				
			||||||
    # 初始化哈希表
 | 
					    # 初始化哈希表
 | 
				
			||||||
    map0 = dict[int, int]()
 | 
					    map0 = dict[int, int]()
 | 
				
			||||||
    for i in range(len(nums)):
 | 
					    for i in range(len(nums)):
 | 
				
			||||||
 | 
				
			|||||||
@ -31,10 +31,10 @@ def linear_search_linkedlist(head: ListNode, target: int) -> ListNode | None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    target: int = 3
 | 
					    target = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 在数组中执行线性查找
 | 
					    # 在数组中执行线性查找
 | 
				
			||||||
    nums: list[int] = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]
 | 
					    nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]
 | 
				
			||||||
    index: int = linear_search_array(nums, target)
 | 
					    index: int = linear_search_array(nums, target)
 | 
				
			||||||
    print("目标元素 3 的索引 =", index)
 | 
					    print("目标元素 3 的索引 =", index)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ Author: timi (xisunyy@163.com)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def bubble_sort(nums: list[int]) -> None:
 | 
					def bubble_sort(nums: list[int]) -> None:
 | 
				
			||||||
    """冒泡排序"""
 | 
					    """冒泡排序"""
 | 
				
			||||||
    n: int = len(nums)
 | 
					    n = len(nums)
 | 
				
			||||||
    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
					    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
				
			||||||
    for i in range(n - 1, 0, -1):
 | 
					    for i in range(n - 1, 0, -1):
 | 
				
			||||||
        # 内循环:冒泡操作
 | 
					        # 内循环:冒泡操作
 | 
				
			||||||
@ -19,10 +19,10 @@ def bubble_sort(nums: list[int]) -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def bubble_sort_with_flag(nums: list[int]) -> None:
 | 
					def bubble_sort_with_flag(nums: list[int]) -> None:
 | 
				
			||||||
    """冒泡排序(标志优化)"""
 | 
					    """冒泡排序(标志优化)"""
 | 
				
			||||||
    n: int = len(nums)
 | 
					    n = len(nums)
 | 
				
			||||||
    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
					    # 外循环:待排序元素数量为 n-1, n-2, ..., 1
 | 
				
			||||||
    for i in range(n - 1, 0, -1):
 | 
					    for i in range(n - 1, 0, -1):
 | 
				
			||||||
        flag: bool = False  # 初始化标志位
 | 
					        flag = False  # 初始化标志位
 | 
				
			||||||
        # 内循环:冒泡操作
 | 
					        # 内循环:冒泡操作
 | 
				
			||||||
        for j in range(i):
 | 
					        for j in range(i):
 | 
				
			||||||
            if nums[j] > nums[j + 1]:
 | 
					            if nums[j] > nums[j + 1]:
 | 
				
			||||||
@ -35,10 +35,10 @@ def bubble_sort_with_flag(nums: list[int]) -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    nums: list[int] = [4, 1, 3, 1, 5, 2]
 | 
					    nums = [4, 1, 3, 1, 5, 2]
 | 
				
			||||||
    bubble_sort(nums)
 | 
					    bubble_sort(nums)
 | 
				
			||||||
    print("排序后数组 nums =", nums)
 | 
					    print("排序后数组 nums =", nums)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nums1: list[int] = [4, 1, 3, 1, 5, 2]
 | 
					    nums1 = [4, 1, 3, 1, 5, 2]
 | 
				
			||||||
    bubble_sort_with_flag(nums1)
 | 
					    bubble_sort_with_flag(nums1)
 | 
				
			||||||
    print("排序后数组 nums =", nums1)
 | 
					    print("排序后数组 nums =", nums1)
 | 
				
			||||||
 | 
				
			|||||||
@ -9,8 +9,8 @@ def insertion_sort(nums: list[int]) -> None:
 | 
				
			|||||||
    """插入排序"""
 | 
					    """插入排序"""
 | 
				
			||||||
    # 外循环:base = nums[1], nums[2], ..., nums[n-1]
 | 
					    # 外循环:base = nums[1], nums[2], ..., nums[n-1]
 | 
				
			||||||
    for i in range(1, len(nums)):
 | 
					    for i in range(1, len(nums)):
 | 
				
			||||||
        base: int = nums[i]
 | 
					        base = nums[i]
 | 
				
			||||||
        j: int = i - 1
 | 
					        j = i - 1
 | 
				
			||||||
        # 内循环:将 base 插入到左边的正确位置
 | 
					        # 内循环:将 base 插入到左边的正确位置
 | 
				
			||||||
        while j >= 0 and nums[j] > base:
 | 
					        while j >= 0 and nums[j] > base:
 | 
				
			||||||
            nums[j + 1] = nums[j]  # 1. 将 nums[j] 向右移动一位
 | 
					            nums[j + 1] = nums[j]  # 1. 将 nums[j] 向右移动一位
 | 
				
			||||||
@ -20,6 +20,6 @@ def insertion_sort(nums: list[int]) -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    nums: list[int] = [4, 1, 3, 1, 5, 2]
 | 
					    nums = [4, 1, 3, 1, 5, 2]
 | 
				
			||||||
    insertion_sort(nums)
 | 
					    insertion_sort(nums)
 | 
				
			||||||
    print("排序后数组 nums =", nums)
 | 
					    print("排序后数组 nums =", nums)
 | 
				
			||||||
 | 
				
			|||||||
@ -10,16 +10,16 @@ def merge(nums: list[int], left: int, mid: int, right: int) -> None:
 | 
				
			|||||||
    # 左子数组区间 [left, mid]
 | 
					    # 左子数组区间 [left, mid]
 | 
				
			||||||
    # 右子数组区间 [mid + 1, right]
 | 
					    # 右子数组区间 [mid + 1, right]
 | 
				
			||||||
    # 初始化辅助数组
 | 
					    # 初始化辅助数组
 | 
				
			||||||
    tmp: list[int] = list(nums[left : right + 1])
 | 
					    tmp = list(nums[left : right + 1])
 | 
				
			||||||
    # 左子数组的起始索引和结束索引
 | 
					    # 左子数组的起始索引和结束索引
 | 
				
			||||||
    left_start: int = 0
 | 
					    left_start = 0
 | 
				
			||||||
    left_end: int = mid - left
 | 
					    left_end = mid - left
 | 
				
			||||||
    # 右子数组的起始索引和结束索引
 | 
					    # 右子数组的起始索引和结束索引
 | 
				
			||||||
    right_start: int = mid + 1 - left
 | 
					    right_start = mid + 1 - left
 | 
				
			||||||
    right_end: int = right - left
 | 
					    right_end = right - left
 | 
				
			||||||
    # i, j 分别指向左子数组、右子数组的首元素
 | 
					    # i, j 分别指向左子数组、右子数组的首元素
 | 
				
			||||||
    i: int = left_start
 | 
					    i = left_start
 | 
				
			||||||
    j: int = right_start
 | 
					    j = right_start
 | 
				
			||||||
    # 通过覆盖原数组 nums 来合并左子数组和右子数组
 | 
					    # 通过覆盖原数组 nums 来合并左子数组和右子数组
 | 
				
			||||||
    for k in range(left, right + 1):
 | 
					    for k in range(left, right + 1):
 | 
				
			||||||
        # 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++
 | 
					        # 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++
 | 
				
			||||||
@ -42,7 +42,7 @@ def merge_sort(nums: list[int], left: int, right: int) -> None:
 | 
				
			|||||||
    if left >= right:
 | 
					    if left >= right:
 | 
				
			||||||
        return  # 当子数组长度为 1 时终止递归
 | 
					        return  # 当子数组长度为 1 时终止递归
 | 
				
			||||||
    # 划分阶段
 | 
					    # 划分阶段
 | 
				
			||||||
    mid: int = (left + right) // 2  # 计算中点
 | 
					    mid = (left + right) // 2  # 计算中点
 | 
				
			||||||
    merge_sort(nums, left, mid)  # 递归左子数组
 | 
					    merge_sort(nums, left, mid)  # 递归左子数组
 | 
				
			||||||
    merge_sort(nums, mid + 1, right)  # 递归右子数组
 | 
					    merge_sort(nums, mid + 1, right)  # 递归右子数组
 | 
				
			||||||
    # 合并阶段
 | 
					    # 合并阶段
 | 
				
			||||||
@ -51,6 +51,6 @@ def merge_sort(nums: list[int], left: int, right: int) -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    nums: list[int] = [7, 3, 2, 6, 0, 1, 5, 4]
 | 
					    nums = [7, 3, 2, 6, 0, 1, 5, 4]
 | 
				
			||||||
    merge_sort(nums, 0, len(nums) - 1)
 | 
					    merge_sort(nums, 0, len(nums) - 1)
 | 
				
			||||||
    print("归并排序完成后 nums =", nums)
 | 
					    print("归并排序完成后 nums =", nums)
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,7 @@ class QuickSort:
 | 
				
			|||||||
        if left >= right:
 | 
					        if left >= right:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        # 哨兵划分
 | 
					        # 哨兵划分
 | 
				
			||||||
        pivot: int = self.partition(nums, left, right)
 | 
					        pivot = self.partition(nums, left, right)
 | 
				
			||||||
        # 递归左子数组、右子数组
 | 
					        # 递归左子数组、右子数组
 | 
				
			||||||
        self.quick_sort(nums, left, pivot - 1)
 | 
					        self.quick_sort(nums, left, pivot - 1)
 | 
				
			||||||
        self.quick_sort(nums, pivot + 1, right)
 | 
					        self.quick_sort(nums, pivot + 1, right)
 | 
				
			||||||
@ -51,7 +51,7 @@ class QuickSortMedian:
 | 
				
			|||||||
    def partition(self, nums: list[int], left: int, right: int) -> int:
 | 
					    def partition(self, nums: list[int], left: int, right: int) -> int:
 | 
				
			||||||
        """哨兵划分(三数取中值)"""
 | 
					        """哨兵划分(三数取中值)"""
 | 
				
			||||||
        # 以 nums[left] 作为基准数
 | 
					        # 以 nums[left] 作为基准数
 | 
				
			||||||
        med: int = self.median_three(nums, left, (left + right) // 2, right)
 | 
					        med = self.median_three(nums, left, (left + right) // 2, right)
 | 
				
			||||||
        # 将中位数交换至数组最左端
 | 
					        # 将中位数交换至数组最左端
 | 
				
			||||||
        nums[left], nums[med] = nums[med], nums[left]
 | 
					        nums[left], nums[med] = nums[med], nums[left]
 | 
				
			||||||
        # 以 nums[left] 作为基准数
 | 
					        # 以 nums[left] 作为基准数
 | 
				
			||||||
@ -73,7 +73,7 @@ class QuickSortMedian:
 | 
				
			|||||||
        if left >= right:
 | 
					        if left >= right:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        # 哨兵划分
 | 
					        # 哨兵划分
 | 
				
			||||||
        pivot: int = self.partition(nums, left, right)
 | 
					        pivot = self.partition(nums, left, right)
 | 
				
			||||||
        # 递归左子数组、右子数组
 | 
					        # 递归左子数组、右子数组
 | 
				
			||||||
        self.quick_sort(nums, left, pivot - 1)
 | 
					        self.quick_sort(nums, left, pivot - 1)
 | 
				
			||||||
        self.quick_sort(nums, pivot + 1, right)
 | 
					        self.quick_sort(nums, pivot + 1, right)
 | 
				
			||||||
@ -102,7 +102,7 @@ class QuickSortTailCall:
 | 
				
			|||||||
        # 子数组长度为 1 时终止
 | 
					        # 子数组长度为 1 时终止
 | 
				
			||||||
        while left < right:
 | 
					        while left < right:
 | 
				
			||||||
            # 哨兵划分操作
 | 
					            # 哨兵划分操作
 | 
				
			||||||
            pivot: int = self.partition(nums, left, right)
 | 
					            pivot = self.partition(nums, left, right)
 | 
				
			||||||
            # 对两个子数组中较短的那个执行快排
 | 
					            # 对两个子数组中较短的那个执行快排
 | 
				
			||||||
            if pivot - left < right - pivot:
 | 
					            if pivot - left < right - pivot:
 | 
				
			||||||
                self.quick_sort(nums, left, pivot - 1)  # 递归排序左子数组
 | 
					                self.quick_sort(nums, left, pivot - 1)  # 递归排序左子数组
 | 
				
			||||||
@ -115,16 +115,16 @@ class QuickSortTailCall:
 | 
				
			|||||||
"""Driver Code"""
 | 
					"""Driver Code"""
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    # 快速排序
 | 
					    # 快速排序
 | 
				
			||||||
    nums: list[int] = [2, 4, 1, 0, 3, 5]
 | 
					    nums = [2, 4, 1, 0, 3, 5]
 | 
				
			||||||
    QuickSort().quick_sort(nums, 0, len(nums) - 1)
 | 
					    QuickSort().quick_sort(nums, 0, len(nums) - 1)
 | 
				
			||||||
    print("快速排序完成后 nums =", nums)
 | 
					    print("快速排序完成后 nums =", nums)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 快速排序(中位基准数优化)
 | 
					    # 快速排序(中位基准数优化)
 | 
				
			||||||
    nums1: list[int] = [2, 4, 1, 0, 3, 5]
 | 
					    nums1 = [2, 4, 1, 0, 3, 5]
 | 
				
			||||||
    QuickSortMedian().quick_sort(nums1, 0, len(nums1) - 1)
 | 
					    QuickSortMedian().quick_sort(nums1, 0, len(nums1) - 1)
 | 
				
			||||||
    print("快速排序(中位基准数优化)完成后 nums =", nums1)
 | 
					    print("快速排序(中位基准数优化)完成后 nums =", nums1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 快速排序(尾递归优化)
 | 
					    # 快速排序(尾递归优化)
 | 
				
			||||||
    nums2: list[int] = [2, 4, 1, 0, 3, 5]
 | 
					    nums2= [2, 4, 1, 0, 3, 5]
 | 
				
			||||||
    QuickSortTailCall().quick_sort(nums2, 0, len(nums2) - 1)
 | 
					    QuickSortTailCall().quick_sort(nums2, 0, len(nums2) - 1)
 | 
				
			||||||
    print("快速排序(尾递归优化)完成后 nums =", nums2)
 | 
					    print("快速排序(尾递归优化)完成后 nums =", nums2)
 | 
				
			||||||
 | 
				
			|||||||
@ -53,7 +53,7 @@ class ArrayQueue:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def to_list(self) -> list[int]:
 | 
					    def to_list(self) -> list[int]:
 | 
				
			||||||
        """返回列表用于打印"""
 | 
					        """返回列表用于打印"""
 | 
				
			||||||
        res: list[int] = [0] * self.size()
 | 
					        res = [0] * self.size()
 | 
				
			||||||
        j: int = self.__front
 | 
					        j: int = self.__front
 | 
				
			||||||
        for i in range(self.size()):
 | 
					        for i in range(self.size()):
 | 
				
			||||||
            res[i] = self.__nums[(j % self.capacity())]
 | 
					            res[i] = self.__nums[(j % self.capacity())]
 | 
				
			||||||
 | 
				
			|||||||
@ -104,8 +104,8 @@ class LinkedListDeque:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def to_array(self) -> list[int]:
 | 
					    def to_array(self) -> list[int]:
 | 
				
			||||||
        """返回数组用于打印"""
 | 
					        """返回数组用于打印"""
 | 
				
			||||||
        node: ListNode | None = self.front
 | 
					        node = self.front
 | 
				
			||||||
        res: list[int] = [0] * self.size()
 | 
					        res = [0] * self.size()
 | 
				
			||||||
        for i in range(self.size()):
 | 
					        for i in range(self.size()):
 | 
				
			||||||
            res[i] = node.val
 | 
					            res[i] = node.val
 | 
				
			||||||
            node = node.next
 | 
					            node = node.next
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@ class LinkedListStack:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def to_list(self) -> list[int]:
 | 
					    def to_list(self) -> list[int]:
 | 
				
			||||||
        """转化为列表用于打印"""
 | 
					        """转化为列表用于打印"""
 | 
				
			||||||
        arr: list[int] = []
 | 
					        arr = []
 | 
				
			||||||
        node = self.__peek
 | 
					        node = self.__peek
 | 
				
			||||||
        while node:
 | 
					        while node:
 | 
				
			||||||
            arr.append(node.val)
 | 
					            arr.append(node.val)
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,7 @@ class BinarySearchTree:
 | 
				
			|||||||
            return None
 | 
					            return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # 将数组中间节点作为根节点
 | 
					        # 将数组中间节点作为根节点
 | 
				
			||||||
        mid: int = (start_index + end_index) // 2
 | 
					        mid = (start_index + end_index) // 2
 | 
				
			||||||
        root = TreeNode(nums[mid])
 | 
					        root = TreeNode(nums[mid])
 | 
				
			||||||
        # 递归建立左子树和右子树
 | 
					        # 递归建立左子树和右子树
 | 
				
			||||||
        root.left = self.build_tree(
 | 
					        root.left = self.build_tree(
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ def level_order(root: TreeNode | None) -> list[int]:
 | 
				
			|||||||
    queue: deque[TreeNode] = deque()
 | 
					    queue: deque[TreeNode] = deque()
 | 
				
			||||||
    queue.append(root)
 | 
					    queue.append(root)
 | 
				
			||||||
    # 初始化一个列表,用于保存遍历序列
 | 
					    # 初始化一个列表,用于保存遍历序列
 | 
				
			||||||
    res: list[int] = []
 | 
					    res = []
 | 
				
			||||||
    while queue:
 | 
					    while queue:
 | 
				
			||||||
        node: TreeNode = queue.popleft()  # 队列出队
 | 
					        node: TreeNode = queue.popleft()  # 队列出队
 | 
				
			||||||
        res.append(node.val)  # 保存节点值
 | 
					        res.append(node.val)  # 保存节点值
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,7 @@ def list_to_tree(arr: list[int]) -> TreeNode | None:
 | 
				
			|||||||
    if not arr:
 | 
					    if not arr:
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    i: int = 0
 | 
					    i = 0
 | 
				
			||||||
    root = TreeNode(arr[0])
 | 
					    root = TreeNode(arr[0])
 | 
				
			||||||
    queue: deque[TreeNode] = deque([root])
 | 
					    queue: deque[TreeNode] = deque([root])
 | 
				
			||||||
    while queue:
 | 
					    while queue:
 | 
				
			||||||
 | 
				
			|||||||
@ -10,10 +10,9 @@ from .linked_list import ListNode, linked_list_to_list
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def print_matrix(mat: list[list[int]]) -> None:
 | 
					def print_matrix(mat: list[list[int]]) -> None:
 | 
				
			||||||
    """Print a matrix"""
 | 
					    """Print a matrix"""
 | 
				
			||||||
    s: list[str] = []
 | 
					    s = []
 | 
				
			||||||
    for arr in mat:
 | 
					    for arr in mat:
 | 
				
			||||||
        s.append("  " + str(arr))
 | 
					        s.append("  " + str(arr))
 | 
				
			||||||
 | 
					 | 
				
			||||||
    print("[\n" + ",\n".join(s) + "\n]")
 | 
					    print("[\n" + ",\n".join(s) + "\n]")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -47,7 +46,7 @@ def print_tree(
 | 
				
			|||||||
    if root is None:
 | 
					    if root is None:
 | 
				
			||||||
        return
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prev_str: str = "    "
 | 
					    prev_str = "    "
 | 
				
			||||||
    trunk = Trunk(prev, prev_str)
 | 
					    trunk = Trunk(prev, prev_str)
 | 
				
			||||||
    print_tree(root.right, trunk, True)
 | 
					    print_tree(root.right, trunk, True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -430,12 +430,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ```python title="list.py"
 | 
					    ```python title="list.py"
 | 
				
			||||||
    # 通过索引遍历列表
 | 
					    # 通过索引遍历列表
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    for i in range(len(list)):
 | 
					    for i in range(len(list)):
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 直接遍历列表元素
 | 
					    # 直接遍历列表元素
 | 
				
			||||||
    count: int = 0
 | 
					    count = 0
 | 
				
			||||||
    for n in list:
 | 
					    for n in list:
 | 
				
			||||||
        count += 1
 | 
					        count += 1
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
				
			|||||||
@ -87,10 +87,10 @@
 | 
				
			|||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def algorithm(n) -> int:  # 输入数据
 | 
					    def algorithm(n) -> int:  # 输入数据
 | 
				
			||||||
        A: int = 0            # 暂存数据(常量,一般用大写字母表示)
 | 
					        A = 0                 # 暂存数据(常量,一般用大写字母表示)
 | 
				
			||||||
        b: int = 0            # 暂存数据(变量)
 | 
					        b = 0                 # 暂存数据(变量)
 | 
				
			||||||
        node = Node(0)        # 暂存数据(对象)
 | 
					        node = Node(0)        # 暂存数据(对象)
 | 
				
			||||||
        c: int = function()   # 栈帧空间(调用函数)
 | 
					        c = function()        # 栈帧空间(调用函数)
 | 
				
			||||||
        return A + b + c      # 输出数据
 | 
					        return A + b + c      # 输出数据
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -293,10 +293,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ```python title=""
 | 
					    ```python title=""
 | 
				
			||||||
    def algorithm(n: int) -> None:
 | 
					    def algorithm(n: int) -> None:
 | 
				
			||||||
        a: int = 0                     # O(1)
 | 
					        a = 0                     # O(1)
 | 
				
			||||||
        b: List[int] = [0] * 10000     # O(1)
 | 
					        b = [0] * 10000     # O(1)
 | 
				
			||||||
        if n > 10:
 | 
					        if n > 10:
 | 
				
			||||||
            nums: List[int] = [0] * n  # O(n)
 | 
					            nums = [0] * n  # O(n)
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Go"
 | 
					=== "Go"
 | 
				
			||||||
 | 
				
			|||||||
@ -415,7 +415,7 @@ $$
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ```python title=""
 | 
					    ```python title=""
 | 
				
			||||||
    def algorithm(n: int) -> None:
 | 
					    def algorithm(n: int) -> None:
 | 
				
			||||||
        a: int = 1  # +1
 | 
					        a = 1      # +1
 | 
				
			||||||
        a = a + 1  # +1
 | 
					        a = a + 1  # +1
 | 
				
			||||||
        a = a * 2  # +1
 | 
					        a = a * 2  # +1
 | 
				
			||||||
        # 循环 n 次
 | 
					        # 循环 n 次
 | 
				
			||||||
@ -604,7 +604,7 @@ $$
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ```python title=""
 | 
					    ```python title=""
 | 
				
			||||||
    def algorithm(n: int) -> None:
 | 
					    def algorithm(n: int) -> None:
 | 
				
			||||||
        a: int = 1  # +0(技巧 1)
 | 
					        a = 1      # +0(技巧 1)
 | 
				
			||||||
        a = a + n  # +0(技巧 1)
 | 
					        a = a + n  # +0(技巧 1)
 | 
				
			||||||
        # +n(技巧 2)
 | 
					        # +n(技巧 2)
 | 
				
			||||||
        for i in range(5 * n + 1):
 | 
					        for i in range(5 * n + 1):
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user