在计算机科学中,算法是解决问题的基石。以下是一些经典的算法问题,它们在面试和实际项目中都非常常见。

常见问题类型

  • 排序问题:如冒泡排序、选择排序、插入排序等。
  • 查找问题:如二分查找、哈希表查找等。
  • 动态规划问题:如斐波那契数列、最长公共子序列等。
  • 图论问题:如最短路径问题、最小生成树等。

示例问题

1. 斐波那契数列

斐波那契数列是一个著名的数列,每个数字是前两个数字的和。例如:0, 1, 1, 2, 3, 5, 8, 13, ...

Python 代码示例:

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

2. 最长公共子序列

给定两个字符串,找出它们的最长公共子序列。

Python 代码示例:

def longest_common_subsequence(str1, str2):
    m, n = len(str1), len(str2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if str1[i-1] == str2[j-1]:
                dp[i][j] = dp[i-1][j-1] + 1
            else:
                dp[i][j] = max(dp[i-1][j], dp[i][j-1])
    return dp[m][n]

扩展阅读

更多关于经典算法问题的资料,可以参考本站算法教程


算法图解
/center>