算法
老羴羊不膻
准备转Cs的学生一枚
展开
-
二分法细微差异与变种
二分法是一种对于有序数列查找时间复杂度为O(logN)的方法。常见二分法最常用的方法是找出该数列中是否含有某一个数字,有则返回其位索引,没有则退出返回-1。while(l<=r){ mid = (l+r)/2; if(arr[mid]==target){ return mid; } if (arr[mid]<target){ l = mid + 1;// 由于除法是向下取整l=mid+1;不然在特定情况下会陷入l=mi原创 2020-06-14 16:41:40 · 187 阅读 · 0 评论 -
数据结构学习笔记
# 没有书本,就把数据结构的记录mark在这个地方2020/03/23顺序存储和随机存储是两种物理存储结构。其并列的是索引存储和散列存储????线性表的顺序存储结构是一种随机存取 的存储结构,线性表的链式存储结构是一种() 的存储结构。顺序存取,随机存取是指对于存储在物理存储结构种的数据的访问读写方式顺序存取:数据只可以按照顺序来依次存取随机存取:数据可以不需要按照顺序来随...原创 2020-03-24 01:49:49 · 280 阅读 · 0 评论 -
剑指正则表达式.*
因为这个想得太乱了,mark在这边记下来NOTE:涉及二元的只有*,因此将*和其他分开即可。同时又是一个递归方法,设置扫描终止条件。class Solution3: # s, pattern都是字符串 # 问题可以分为两个部分,匹配过了的,和没有匹配的,可以拆分之后用递归来完成 # 每次匹配第一位时,都有三种情况 def match(self, s, ...原创 2020-03-14 17:28:47 · 149 阅读 · 0 评论 -
分治思维与归并排序
刷到归并,就此开坑,归并似乎用的是分治的思维????图解归并算法????参考详解:其中诠释出,通过分治的方法,降低对比交换的次数,来降低时间复杂度归并排序def mergeSort(temp_list, number_list, left, right): if left == right: return elif left < right: ...原创 2020-03-08 00:06:21 · 136 阅读 · 0 评论 -
动态规划
开坑动态规划:????【算法复习】动态规划基本思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。问:和递归的区别在哪里?还是说动态规划是借助递归的解决方法来实现的?纠正:子问题重复出现,并不是重复调用本身并return。以最大连续子序列和为例,包含后一元素的子序列最大...原创 2020-03-07 17:37:01 · 90 阅读 · 0 评论 -
二叉树遍历与递归及非递归实现方法
二叉树的遍历真的是编了忘忘了编,直接Mark到这边以便查阅。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonea = TreeNode(10)a.left = TreeNode(6)a.right = Tre...原创 2020-03-04 02:33:52 · 104 阅读 · 0 评论