随笔分类 - 算法模板
发表于 2024-04-08 00:09阅读:73评论:0推荐:0
摘要:单调栈 #单调栈 -> 解决「下一个更大元素」,「上一个更小元素」 #注意1:找最近的比它小的数,需要维护单调递增栈,即栈顶元素比它大的全部弹出(对于i+1来说,他们的贡献不会比i大,所以没用了)。栈顶剩下的就是最近那个。然后自己再入栈。 #注意2:找右边最近的比它小的数,需要逆序遍历。但栈依然是递
阅读全文 »
发表于 2024-04-08 00:03阅读:34评论:0推荐:0
摘要:双指针 #模板:i快指针,j慢指针(快指针可以不停的移动,有个慢指针需要符合条件后才能移动) #eg 求最长的不包含重复数字的连续子序列 # 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作 for i in range(n): j=0 while j < i and check(j
阅读全文 »
发表于 2024-04-07 23:58阅读:50评论:0推荐:0
摘要:质数,筛质数 #如果是某范围内的所有数的质因数 (应先筛去素数,剩下的再分解) #判断素数 #方法一 from math import sqrt def is_prime1(n): if n == 1: return False for i in range(2,int(sqrt(n))+1): i
阅读全文 »
发表于 2024-02-15 11:42阅读:25评论:0推荐:0
摘要:在二叉树遍历问题中,有三种常见的遍历方式:前序遍历、中序遍历和后序遍历。以下是这三种遍历方式的递归模板: 1. 前序遍历(Preorder Traversal): 按照 根节点 -> 左孩子 -> 右孩子 的方式遍历 def preorderTraversal(root): if not root:
阅读全文 »
发表于 2024-02-15 11:31阅读:101评论:0推荐:0
摘要:回溯算法的模板通常包含递归函数和回溯过程。以下是一个通用的回溯算法模板: def backtrack(start, path, other_parameters): # 满足结束条件时,将当前路径加入结果 if satisfies_end_condition: result.append(path[
阅读全文 »