力扣刷题之旅:进阶篇(二)

         力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。  

力扣刷题之旅:进阶篇(二)_第1张图片

 

        继续我的力扣刷题之旅,在上一篇文章中,我深入探索了图算法和动态规划的高级技巧。现在,我将附上一些简单的代码示例,以展示这些算法在实际问题中的应用。

一、广度优先搜索(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和动态规划在简单问题中的应用。通过不断练习和实践,我们可以逐渐掌握这些算法的核心思想和应用技巧,为解决更复杂的问题打下坚实的基础。

你可能感兴趣的:(leetcode,算法,职场和发展,数据结构)