随笔分类 - 算法知识归纳
摘要:leetcode:https://leetcode-cn.com/problemset/lcof 数据结构 --数组 --链表 21 22链表中倒数第k个节点 class Solution { public ListNode getKthFromEnd(ListNode head, int k) {
阅读全文
摘要:虽然《剑指offer》全书都已经把书本上需要掌握的数据结构和算法都讲得很清楚了,但通过归纳分专题来写,可以给初学者和复习时候带来事半功倍的效果。 一、数据结构题 二、算法 三、综合
阅读全文
摘要:11-盛最多水的容器 思路:定义2个指针分别指向数组的两端,找出两边缘最小的那个,然后乘以两边缘的距离,然后向中间搜索,移动一次算出结果比较取最大的。 455-分发饼干 思路:可以先对两个数组进行排序,然后从小到大来一一对应,res+1,第二个数组发现不能满足第一个数组的时候逐步+1,然后用该数组后
阅读全文
摘要:70-爬楼梯 思路:该问题可以理解为经典的“斐波那契数列”问题,但这里需要用动规实现,递归会超时 120-三角形最小路径和 思路:可以考虑从三角形的最后一行作为更新的数组,然后逐步向上遍历出最小的元素放在第一位,第一位即为所求。 64-最小路径和 思路:基础动规,比较上面[i-1][j]和左边[i]
阅读全文
摘要:235(最近公共祖先) 236(任意二叉树,不是二叉搜索树) 98(验证是否为二叉搜索树) 法一:直接采用自身性质,左<中<右 法二:采用中序遍历来验证 450 108 230 236(任意二叉树,不是二叉搜索树)
阅读全文
摘要:一、二分搜索树的查找 二、二分搜索树的遍历(深度遍历<前、中、后>,广度遍历) 三、二分搜索树删除最大值最小值 四、 五、
阅读全文
摘要:一、基本思路 二、leetcode有关题型: 704-二分查找 思路:纯二分查找 69-x的平方根 思路:理解根为以x为最右的区间值的查找 35-搜索插入位置 思路:理解为找到左边为最大值的插入位置 153-寻找旋转排序数组中的最小值 思路:可以设置最小值为最右边界值,然后二分查找到该值 154-
阅读全文
摘要:17 93 131 46(全排列) 47 77(组合,记得剪枝) 39 40 216 78 90 401
阅读全文
摘要:79(单词搜索) 200(连通岛屿数量,floodfill算法) 130 417
阅读全文
摘要:算法思路: leetcode75 sort colors 题意:把相同的颜色(用数字指代)按从小到大排序到一起。 解决代码: 时间复杂度:O(N) 空间复杂度:O(1)
阅读全文
摘要:1、概念: RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。 2、解决方法: 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)
阅读全文
摘要:1、概念: 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,
阅读全文
摘要:A、数学: 1、高斯消元法: 概念:数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。但其算法十分复杂,不常用于加减消元法,求出矩阵的秩,以及求出可逆方阵的逆矩阵。不过,如果有过百万条等式时,这个算法会十分省时。一些极大的方程组通常会用迭代法以及花式消元来解
阅读全文
摘要:一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为
阅读全文
摘要:对于图G=(V,E),可以用两种标准表示方法表示。一种表示法是将图作为邻接链表的组合,另一种是将图作为邻接矩阵来看待。 邻接链表 邻接链表表示由一个包含|V|条链表的数组Adj所构成,每个结点有一条链表。对于每个结点u,邻接链表Adj[u]包含所有与结点u之间有边相连的结点v。邻接链表在表示稀疏图上
阅读全文

浙公网安备 33010602011771号