力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。
--点击进入刷题地址
继续我的力扣刷题之旅,在上一篇文章中,我深入探索了图算法和动态规划的高级技巧。现在,我将附上一些简单的代码示例,以展示这些算法在实际问题中的应用。
一、广度优先搜索(BFS)
- 下面是一个使用BFS算法解决“图的遍历”问题的简单代码示例:
from collections import deque def bfs(graph, start): visited = set() queue = deque([start]) while queue: vertex = queue.popleft() print(vertex, end=" ") for neighbor in graph[vertex]: if neighbor not in visited: visited.add(neighbor) queue.append(neighbor) # 示例图的邻接表表示
graph = { 'A': ['B', 'C'], 'B': ['A', 'D', 'E'], 'C': ['A', 'F'], 'D': ['B'], 'E': ['B', 'F'], 'F': ['C', 'E'],
} bfs(graph, 'A') # 输出: A B C D E F
二、深度优先搜索(DFS)
- 下面是一个使用DFS算法解决“二叉树的遍历”问题的简单代码示例:
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def dfs(node): if node is None: return print(node.val, end=" ") dfs(node.left) dfs(node.right) # 构造示例二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5) dfs(root) # 输出: 1 2 4 5 3
三、动态规划(DP)
- 下面是一个使用动态规划解决“斐波那契数列”问题的简单代码示例:
def fibonacci(n): if n <= 1: return n dp = [0, 1] + [0] * (n - 1) for i in range(2, n + 1): dp[i] = dp[i - 1] + dp[i - 2] return dp[n] print(fibonacci(10)) # 输出: 55
这些代码示例展示了BFS、DFS和动态规划在简单问题中的应用。通过不断练习和实践,我们可以逐渐掌握这些算法的核心思想和应用技巧,为解决更复杂的问题打下坚实的基础。