数据结构与算法
文章平均质量分 50
完整的数据结构与算法学习过程
listorm
这个作者很懒,什么都没留下…
展开
-
分治策略
分治策略 将问题分解成多个相同子问题,再合并子问题的解。 最大子序和(lc53) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 思路: 求一个数组的最大子序列和,可将问题分解为求这个数组前后各半的最大子序列和,这个数组的解就是前后2部分中的最大子序列和,和跨越这两部分的序列的最大子序列和,这三个和中的最大值。 递归求解: 确定终止条件:输入序列为一个数时,直接返回这个数值; 不断推进:将输入序列分解为两部分,继续递归求解; 设计法则:假设所有递归都原创 2021-05-08 22:53:25 · 121 阅读 · 0 评论 -
表
表 两种实现的区别 表的数组实现 (指针实现)链表 存储在连续的内存空间上的 通过指针链接不需要连续存储 可以随机访问kth 需要遍历 插入删除元素可能需要最坏情况O(n)O(n)O(n) 常数时间 需要事先知道表的大小 不需要 链表的游标实现 数组下标代表地址 注意事项 链表中一般涉及表头删除插入的,最好添加哑节点 双链表–方便倒序遍历 循环链表 如何判断是否有环? 快慢指针,慢指针一次走一步,快的走两步。 首尾相接时 当慢指针走n步,快指针走2n步,就会回到各自的起点原创 2021-05-06 09:54:06 · 100 阅读 · 1 评论 -
第一、二章 引论、算法分析
递归基本准则 递归不是循环 基准情形 不断推进 设计法则【假设所有递归调用都能运行】 合成效益法则【不同递归调用中做重复性工作】 算法分析 对任意常数k,logkN=O(N)log^kN=O(N)logkN=O(N) 形如f(N)<O(g(N))f(N)<O(g(N))f(N)<O(g(N)),错误,无意义O(·)本身隐含不等关系 要分析的问题:最坏情况下的运行时间 分析从内部向外展开 O(log(n))O(log(n))O(log(n))型算法: a. 分治 b.二分 c. 欧几里原创 2021-04-29 20:26:13 · 174 阅读 · 0 评论