随笔分类 -  数据结构与算法

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

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