随笔分类 -  java

摘要:leetcode -- 二进制 在学习编程语言的运算符时,大部分语言都会有与,或等二进制运算符,我在初期学习这些运算符的时候,并没有重点留意这些运算符,并且在后续的业务代码中也没有频繁的使用过,直到后来的一些算法题目和源码中经常遇到它们的身影,这些二进制运算符相比普通的运算符具有更快的效率,比如ha 阅读全文
posted @ 2021-06-05 10:37 长安不乱 阅读(738) 评论(2) 推荐(1)
摘要:人理解循环,神理解递归。递归不同于回溯,回溯是一种算法思路,递归是一种思路的实现方式,递归相当于图结构中的邻接矩阵和邻接表。这种实现方式通俗来说就是自己调用自己,比如,我想学习一下Spring cloud,但是在学习Spring cloud之前,我还得先学一下spring Boot,在学习Sprin 阅读全文
posted @ 2021-04-10 18:43 长安不乱 阅读(233) 评论(0) 推荐(0)
摘要:回溯法,与递归类似,但又有所区别,回溯法是一种通用的算法思路,也就是一道路走到底,发现走不通了,就需要返回走另一条路,再试试另一条路是否还能走通,当然回溯法是需要返回的,因此还需要做好返回的标记。过程就是一条一条的试探,这种思路放在树中,也就是深度优先搜索,不过回溯法经常会使用递归来实现。这篇文章就 阅读全文
posted @ 2021-03-29 16:25 长安不乱 阅读(311) 评论(0) 推荐(0)
摘要:之前一直在复习树的相关知识,后来在leetcode中做了八道题目,这些题目不像之前二分查找一样有很多的细节,更多的只是看你的解题思路和树的基础操作,还有就是对递归的掌握程度。这八道题目总共可以分为三类,一类就是对一般树进行操作,主要就是提出一些要求,让你实现,第二类就是对树进行不同的方式遍历,第三就 阅读全文
posted @ 2020-07-29 09:18 长安不乱 阅读(244) 评论(0) 推荐(0)
摘要:树:基本树形 树拓展了那些一维顺序结构(链表,栈,队列等),链表的插入删除速度快,但是查找速度慢,数组查找速度快,但是插入删除速度慢,为了能够插入、删除、遍历、查找速度相对较快,就使用了树结构。树多用与查找和索引,比如内存管理中的堆heap就是一个不存储边的完全二叉树。本文不对树的定义进行阐述,这些 阅读全文
posted @ 2020-07-27 14:42 长安不乱 阅读(671) 评论(0) 推荐(0)
摘要:树的遍历也一直都是重点,主要是在建造了一棵树之后,如何将这棵树输出来确定创建的树是否正确就成了问题。网上现在也有很多的方法来输出树,python也有专门的包来可视化,不过今天主要总结最基础的遍历算法。 树的遍历主要根据访问根节点的时机来分为先序、中序、后序和层次遍历。其中要掌握了十种算法,分别是先序 阅读全文
posted @ 2020-07-21 15:44 长安不乱 阅读(2087) 评论(0) 推荐(0)
摘要:字符串匹配就是查找子串是否在主串中,或者在主串的哪个位置上。一般而言,使用暴力破解,将子串与主串一一对比就可以找到结果,但是这样的复杂程度太高,比如主串是aaaaaaaaaaaac,子串是aaaac,过程就是主串的第一个a和子串的第一个a对比,相同,对比第二个,一直到主串的第五个a和子串最后的c对比 阅读全文
posted @ 2020-07-18 15:22 长安不乱 阅读(512) 评论(0) 推荐(0)
摘要:之前在数据结构搜索那章说过,折半(二分)一般适用于有序列表的查找,但是在写的时候需要注意算法的细节。我在leetcode上总共写了八道应用了二分算法的题目,从中总结一下写二分算法需要注意什么样的细节,本文全部的代码都放在我的github。 ##一般二分查找 leetcode,第704题,binary 阅读全文
posted @ 2020-07-04 16:54 长安不乱 阅读(457) 评论(0) 推荐(1)