随笔分类 - 数据结构与算法
摘要:如何判断算法复杂度 确定问题规模 n 循环减半过程 -- logn k层关于n的循环 - n 复杂情况根据算法执行过程判断 判断空间复杂度:评估算法内存占用大小 算法使用几个变量:O(1) 算法使用了长度为n的一维列表:O(n) 算法使用了m行n列的二维列表:O(mn) 递归:调用自身,结束条件(避
阅读全文
摘要:递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子,它
阅读全文
摘要:数组、字符串(Array & String) 数组的优点在于: 构建非常简单 能在 O(1) 的时间里根据数组的下标(index)查询某个元素 而数组的缺点在于: 构建时必须分配一段连续的空间 查询某个元素是否存在时需要遍历整个数组,耗费 O(n) 的时间(其中,n 是元素的个数) 删除和添加某个元
阅读全文
摘要:15,三数之和 ————双指针 class solution(): def threeSum(self,nums): """ :param nums: list[int] :return: """ nums.sort() res = [] for i in range(len(nums)-2): i
阅读全文
摘要:数据结构:数据(基本类型(int,float,char))的组织方式 算法复杂度 时间复杂度:用来估计算法运行时间的一个单位;O(n)、O(1) 常见于for循环, 或者log(n)—常见于while循环。循环减半时复杂度为log(n) 常见时间复杂度排序 O(1) < O(logn)< O(n)
阅读全文
摘要:哈希表(hash)根据键(key)直接访问在内存存储位置的数据结构。通过计算关于键值的函数,将所需要查询的数据映射到表中一个位置来访问,提高查询速度。映射函数称为散列函数hash函数,存放记录的数组称为散列表。 把Key通过固定的算法函数(hash函数),转换成一个整型数字,对该数字的数组长度进行取
阅读全文