算法
Shashank497
我要找到你,不管南北东西
展开
-
python实现牛顿法求二次根、三次根
公式:: k = n while abs(k*k-n)>1e-6: k = (k + n/k)/2 print(k)def cube_root(n): k = n while abs(k*k*k-n)>1e-6: k = k + (k*k*k-n)/3*k*k print(k)sqrt(2)cube_root(8)原创 2022-02-09 22:02:03 · 1034 阅读 · 0 评论 -
python实现二叉树层次遍历(BFS)
# 求二叉树路径DFSclass TreeNode: def __init__(self, val = None): self.left = None self.right = None self.val = valclass BTree: def insert(self,root,node): #构建二叉排序树 if root is None: return node if roo.原创 2022-01-23 22:28:02 · 1511 阅读 · 0 评论 -
python求二叉树所有路径(DFS)
# 求二叉树路径DFSclass TreeNode: def __init__(self, val = None): self.left = None self.right = None self.val = valclass BTree: def insert(self,root,node): #构建二叉排序树 if root is None: return node if root原创 2022-01-23 21:29:55 · 1377 阅读 · 0 评论 -
python合并有序链表(递归)
# 合并有序链表class ListNode: def __init__(self, value=None): self.value = value self.next = Nonedef Creat_Link_Tail(lst): head = ListNode(lst[0]) L = head for i in range(1, len(lst)): p = ListNode(lst[i]) L.nex.原创 2022-01-23 16:10:01 · 624 阅读 · 0 评论 -
python求最长回文子串
原理可参考链接:https://blog.csdn.net/sinat_35261315/article/details/78267046?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-原创 2022-01-23 11:43:16 · 997 阅读 · 0 评论 -
python求链表中的循环头节点(快慢指针方法)
class LinkNode(): def __init__(self,value = None): self.value = value self.next = Nonedef Creat_Link_Tail(lst): L = LinkNode(lst[0]) first_node = L for i in range(1, len(lst)): if type(lst[i]) == int: p原创 2022-01-22 23:46:03 · 447 阅读 · 0 评论 -
python求二叉树深度(递归)
def tree_deep(root): if not root: return 0 #说明上一个节点是叶子节点,开始逐步返回 left, right = 0, 0 if root.left: left = tree_deep(root.left) #左子树递归 if root.right: right = tree_deep(root.right) #右子树递归 return max(left, right) + 1原创 2022-01-22 23:18:33 · 1452 阅读 · 0 评论 -
python实现快速幂
原理可参考:https://blog.csdn.net/qq_19782019/article/details/85621386'''@param base 底数@param power 指数@return res 求幂结果的最后3位数 '''def fast_power(base, power): res = 1 while power > 0: if power % 2 == 1: res = res * base % 1000原创 2022-01-22 22:23:29 · 1716 阅读 · 0 评论 -
括号匹配 python
普通括号匹配python# 括号匹配def bracket_matching(ans): stack = [] flag = True left = ['(', '{', '['] right = [')', '}', ']'] for i in range(len(ans)): if ans[i] in left: stack.append(ans[i]) else: tmp =原创 2021-12-29 16:20:50 · 670 阅读 · 0 评论 -
DP动态规划类算法设计题解题方法总结
一、动态规划题目特点:计数:– 有多少种方式走到右下角– 有多少种方法选出k个数使得和是sum求最大最小值:–从左上角走到右下角路径的最大数字和– 最长上升子序列长度求存在性– 取石子游戏,先手是否必胜– 能不能选出k个数使得和是sum解题四个步骤– 确定状态(定海神针)– 转移方程– 初始条件和边界情况– 计算顺序二、实例讲解付硬币问题确定状态:弄清最后一步是什么,最有策略中的一定有一枚最后的硬币,如下图:引出子问题:最少用多少枚硬币可以拼出原创 2020-11-25 10:41:41 · 440 阅读 · 0 评论