数据结构与算法
文章平均质量分 96
整理数据结构相关知识,记录一些经典算法题思路
Ian Wong
这个作者很懒,什么都没留下…
展开
-
DFS+回溯算法专题
基础知识回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题。通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量)。深度优先搜索(Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程原创 2022-01-29 15:06:45 · 4074 阅读 · 0 评论 -
动态规划专题
基础知识动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分原创 2022-01-29 15:01:13 · 574 阅读 · 0 评论 -
数据结构与算法之字符串处理专题
基础知识Java中提供两种实现字符串的类,分别是String、StringBuffer类。String字符串的声明:1、常量声明方式String sName=“Bob”;2、对象声明方式String sName=new String(“Bob”);3、由字符数组初始化String sName=new String(char[] ch);4、由字符数组指定元素个数String sName=new String(char[] ch,int index,int length);4、指定字符原创 2022-01-09 15:28:24 · 1382 阅读 · 0 评论 -
数据结构之树专题
基础知识树的概念参考博客1参考博客2参考博客3参考博客4树(tree)包含 n(n≥0) 个节点(当 n=0 时,称为空树)。其中非空树是由n(n≥1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。另外,也可以说树是由根节点和若干颗子树构成的。相关术语结点:使用树结构存储的每一个数据元素都被称为“结点”。图中,数据元素 A 就是一个结点;父结点(双亲结点)、子结点和兄弟结点:对于图中的结点 A、B、C、D ,A 是原创 2021-12-24 15:36:57 · 381 阅读 · 0 评论 -
数据结构之链表专题
链表解题技巧链表题可以通过画图来理清思路链表题细节很重要,一定要好好分析,充分考虑所有情况,例如在分析链表题的时候,务必要注意LlstNode.next是否为空!在写每个循环时,一定要想清楚循环进入的条件是什么,退出的条件是什么!在java中,链表是通过对象模拟形成的,一个节点就是一个对象,成员变量val就是当前节点对象的值,next就是下一个节点对象。在做链表题的时候,首先分析头节点会不会改变,如果改变就创建虚拟头节点,方便处理边界情况,然后根据题目情况分析是否真的需要虚拟头节点。例如删除节点的题原创 2021-12-07 11:26:55 · 309 阅读 · 0 评论 -
十大排序算法
概述十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度对排序数据的总的操作次数。反映当n变化时,操作次数呈现什原创 2021-12-07 11:16:02 · 664 阅读 · 0 评论 -
二分法专题
二分法思想70%的题时根据单调性()使用二分法,而95%的题根据两段性可以确定使用二分法解除。所谓两段性,就是一个区间根据某个性质可以二分为红色和绿色两段,而我们的目的就通过二分找到这个分界点t二分的流程确定二分的初始边界;编写二分的代码框架;设计一个性质( check() )划分区间为红绿两段;判断一下区间如何更新,如果更新方式为left = mid, right = mid - 1,则在计算mid时加上1向上取整;二分的两个模板x的平方根题目链接:x的平方根给你一个非负整原创 2021-11-02 19:55:01 · 403 阅读 · 0 评论