随笔分类 -  算法模板

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

点击右上角即可分享
微信分享提示