算法知识库
文章平均质量分 61
kaiqisan
新人社畜,前端开发正式员工,自学前端相关知识,有数个项目的开发经验,整过网页,也搞过小程序。了解后端一点点,搭过简易服务器。英语六级低分过,日语n2水平,欢迎交流病情!
展开
-
贪心算法 - java切金条问题 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天康康一个贪心算法的经典例题 ---- 切金条问题问题一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板?例如,给定数组[10,20,30],代表一共三个人,整块金条长度为10+20+30=60.金条要分成10,20,30三个部分。如果,先把长度60的金条分成10和50,花费60再把长度50的金条分成20和30,花费50.原创 2021-01-31 16:17:02 · 323 阅读 · 0 评论 -
java字典树(前缀树) - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,这一篇文章咱来讲讲字典树把,之前在给别人代答辩数据结构的时候初次了解到这个概念,今天在刷算法课的时候右看到了,所以就有了这个视频首先还是明确一个概念,什么是字典树?又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树.原创 2021-01-30 22:10:37 · 245 阅读 · 0 评论 -
算法题:求岛屿的数量 java - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天爷又回来了,继续昨天的并查集,来结合例题讲讲深搜的奇妙用法问题如图,求岛的数量{0, 0, 1, 0, 1, 0}{1, 1, 1, 0, 1, 0}{1, 0, 0, 1, 0, 0}{0, 0, 0, 0, 0, 0}图中 0 代表海洋,1代表陆地(PS:陆地直接无法通过斜对角的陆地来直接连接)所以图中一共有3块陆地思路先进行遍历,对所有的数组成员进行遍历,如果碰到一块陆地就使用递归进行深搜,在深搜的.原创 2021-01-30 20:43:08 · 402 阅读 · 0 评论 -
java并查集 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,最近被力扣的每日一题给整破防了,天天都是并查集,我麻了!所以最近都在学习并查集,现在终于搞懂了,于是有了这篇博客!文章目录什么是并查集代码实现优化代码总结(谈人生)如果觉得这篇博客还不错的,别忘了点个赞收个藏唷!爱你们!ε=(´ο`*))(以前都从没要过赞,今天这篇真的真的写了很久!)想要代码的直接通过目录超链接熬什么是并查集首先是明确概念并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单.原创 2021-01-29 17:39:05 · 164 阅读 · 0 评论 -
java求完全二叉树的节点个数 - 左神算法基础课05 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天讲讲二叉树中比较难的一道题—求二叉树的节点个数首先还是明确一下概念----何为完全二叉树?一棵树的节点自上而下,自左而右排列没有空缺的一颗树叫做完全二叉树,设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。PS:完全二叉树的特点,完全二叉树的所有子树都是完全二叉树完全二叉树,因为456从左到右连续 1 / \ .原创 2021-01-27 15:51:42 · 280 阅读 · 0 评论 -
java判断是否为序列二叉树 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天还是二叉树诶嘿嘿首先还是明确一个概念 ---- 何为序列二叉树答:中序遍历之后序列递增的二叉树为序列二叉树比如这棵树 4 / \ 2 7 / \ / \ 1 3 5 8 \ 6它的中序遍历结果为 12345678 为单调递增,所以这棵树为序列二叉树思路1所以我们判断的核心思路就是使用当前遍历元素和上一个遍历元.原创 2021-01-26 22:04:42 · 144 阅读 · 0 评论 -
java判断平衡二叉树 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天还是二叉树的内容!首先明确一个概念----何为平衡二叉树答:左子树和右子树高度差小于等于1所以判断一个数是否为平衡二叉树的时候需要遍历所有的子树因为概念的限制,即使一颗树在最高的根节点处看起来是平衡的,但如果某个子树不平衡的话,那这棵树还是不平衡的!举个例子 1 / \ 2 3 / / \ 4 6 7 / 5这棵树虽然在根节点处是平衡的(左边4右边3).原创 2021-01-26 16:52:59 · 158 阅读 · 1 评论 -
树的序列化与反序列化java - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒为什么引入这个概念在计算机中,如果我们如果想要可视化一棵树,那会是非常困难的工作,所以,我们就想到了一种最简单的方法来表示一棵树,而且只使用字符串,也可以区分每一颗树的不同现在有两棵树 1 / 2 / 3 1 \ 2 \ 3如果我们使用同样的遍历方法,结果都是123,如果一个二叉树的结构未知,我们只是使用遍历的方法,我们将永远无法获取一棵树的结构。所以我们在遍历的.原创 2021-01-26 16:22:39 · 375 阅读 · 0 评论 -
java寻找后继节点 - 左神算法基础课05 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,最近的问题都问题现有二叉树,每个节点多一个指针,会指向父节点现在要找目标节点的后继节点,(中序遍历中的当前节点的下一个节点)进阶要求:不要遍历整棵树参考树类class Tree<T>{ public T val; public Tree left = null; public Tree right = null; public Tree parent; public.原创 2021-01-25 16:03:02 · 159 阅读 · 0 评论 -
java非递归遍历二叉树 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,都说所有的递归都可以使用非递归的方式来解决,所以这次来一起康康非递归版本的二叉树的遍历递归的本质就是不断往栈中塞入待执行代码,然后在代码块被执行的时候就会被调用执行,直到栈空,所以我们遍历树的时候也需要利用栈结构。众所周知,前中后序遍历树的方法都很好理解前序遍历就是先访问自己,再访问左节点最后访问右节点(中左右)中序遍历就是先访问左节点,再访问自己最后访问右节点(左中右)后序遍历就是先访问左节点,再访问右节点最后访问自己.原创 2021-01-24 23:21:59 · 283 阅读 · 1 评论 -
链表相交等相关问题java - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天讲讲我至今碰到的最变态的链表题。问题单链表两个单链表可能有环,可能无环,判断两个链表是否存在相交,如果有相交,返回其中一个交点要求: 时间复杂度 O(m + n) 空间复杂度 O(1)(暗示不能使用hash表)思路首先把所有的情况分出来,然后找出规律,分别解决(因为所有的情况都是可以罗列的)首先要考虑到链表的特殊性,它只有一个next属性,所以每一个节点都只有一个箭头先考虑两个链表分离的情况第一种:两个都是无.原创 2021-01-21 15:47:36 · 93 阅读 · 0 评论 -
复杂链表的复制java - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天讲讲复杂链表的复制一个链表在原来的基础上新增一个指针,随机指向任意一个节点(可能是null)然后要求你复制链表随机链表的生成// 复杂链表public class RandList extends LinkList { RandList rand = null; // 随机元素指针 RandList next = null; // 下一个元素指针 public RandList(int va.原创 2021-01-17 19:18:29 · 130 阅读 · 0 评论 -
矩阵找数java - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天康康矩阵找数问题在行和列都排列好的矩阵中(左小右大,上小下大),找一个数,有就返回true,反之返回false要求,时间复杂度为 O(m + n) (暗示不能逐个遍历矩阵的元素0 2 2 52 3 4 74 4 4 85 7 7 9思路从矩阵右上角开始往左下角走,如果当前的元素比要找的数大,就往左走,如果比要找的元素小,就往下走或者从矩阵的左下角开始往右上角走,如果当前元素比要找的数大就往上走,如果比.原创 2021-01-17 18:28:41 · 123 阅读 · 0 评论 -
算法荷兰国旗问题java - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天再来康康链表的算法问题荷兰国旗问题 — 给一串链表,再给一个数字,让做左部分的值比这个数字小,右部分的值比这个数字大,且不修改它们的相对位置。比如flag = 33 -> 2 -> 1 -> 5 -> 6 -> 7 -> 4变换后2 -> 1 -> 3 -> 5 -> 6 -> 7 -> 4进阶要求:时间复杂度 O(N) 空间复杂度O(1.原创 2021-01-16 15:53:26 · 140 阅读 · 0 评论 -
回文链表java代码实现 - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天再更新算法题目,(注,本题来自左神算法,力扣也有该题)https://leetcode-cn.com/problems/palindrome-linked-list/问题请判断一个链表是否为回文链表。条件:一串链表是否在数据上左右对称1->2->2->3->2->2->1 // 这是一个回文链表1->2->3->3->2->2->1 // 这.原创 2021-01-09 17:59:36 · 146 阅读 · 0 评论 -
旋转打印矩阵java代码实现 - 左神算法基础课04 - Kaiqisan
大家好,都吃晚饭了吗?我是Kaiqisan,是一个已经走出社恐的一般生徒,今天第一次更新算法题目,(注,本题来自左神算法)题目现有一个矩阵matrix,需要旋转输出其中的内容(如图)上图的矩阵输出为 1 2 3 4 5 10 15 20 19 18 17 16 11 6 7 8 9 14 13 12方法1思路设定一个左上角元素和右下角元素,以这两个元素为参考点,然后旋转遍历一圈之后,把这两个参考点往内缩,再旋转遍历一周第一周遍历遍历到第一列第二行后停止。第二周遍历参考.原创 2021-01-09 00:29:34 · 244 阅读 · 0 评论