在计算机科学中,算法是解决问题的基石。以下是一些经典的算法问题,它们在面试和实际项目中都非常常见。
常见问题类型
- 排序问题:如冒泡排序、选择排序、插入排序等。
- 查找问题:如二分查找、哈希表查找等。
- 动态规划问题:如斐波那契数列、最长公共子序列等。
- 图论问题:如最短路径问题、最小生成树等。
示例问题
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]
扩展阅读
更多关于经典算法问题的资料,可以参考本站算法教程。
算法图解