leedcode
文章平均质量分 68
ch080139
这个作者很懒,什么都没留下…
展开
-
Leedcode 114. 二叉树展开为链表
目录题目题目分析代码实现题目二叉树展开为链表链接题目分析二叉树的题目基本都是通过递归的方式去做,递归最最重要的就是定义好递归函数的语义。这里我们定义一个辅助函数。这个函数能够将以node为根的二叉树拉成一个链表,并返回头节点。充分利用这个函数的语义(不管这个函数具体如果实现),我们把以root为根的二叉树拉成一个链表可以分为以下几个步骤:(1)将root树的左子树拉成一个链表,即 TreeNode left = flattenHelp(root.left)(2)将root树的右子树拉成一个链原创 2021-12-27 00:42:11 · 536 阅读 · 0 评论 -
Leedcode 316. 去除重复字母
目录题目题目分析代码流程代码实现题目去除重复字母给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。题目分析这个问题一共有2部分,第一个是去除重复的元素,第二个是字典序最小。对于第一个问题很好理解,就是输入的字符串包含重复的字符,需要我们去重,没啥好说的。第二个问题:为什么会存在字典序最小这个问题?因为给定的字符串中的英文字母是乱序的,没有保持从小到大的顺序,(即:a < b < c <原创 2021-12-23 23:12:47 · 598 阅读 · 0 评论 -
二叉树的遍历-中序遍历-递归版本
目录解题思路分析代码实现解题思路分析参考了邓俊辉老师的教材。中序遍历:访问左子树、访问当前节点、访问右子树。中序遍历的顺序如下图所示可以发现对于每一个子树的中序遍历,总是先找到最左侧通路最下面的节点。然后访问它的右孩子,最后向上回溯。因此将中序遍历的顺序进一步抽象,如下图所示:如上图所示,图中最左侧通路一共有L0 L1 ....Ld,d+1个节点,因此中序遍历可以分为d+1端。每一段都可以由最左侧通路上的节点和其对应的右子树组成。当我们访问完一个节点和他对应的右子树后,我们需要回溯到最左侧通原创 2021-12-17 01:58:16 · 362 阅读 · 0 评论 -
二叉树的遍历-先序遍历-递归版本
目录解题思路分析代码实现解题思路分析递归版本参考了邓俊辉老师的教材。在介绍具体方法之前,强调一下语义:访问一个节点,就是对这个节点进行操作,例如压入列表呀,用visit来表示。而仅仅是遍历到一个节点,但是不做访问,仅仅做一些辅助动作,例如压栈呀,用go来表示下图是先序遍历的顺序图,可以看到对于先序遍历,都是首先沿着最左边一条路不停的向下,然后进行回溯向上。可以将上图进一步抽象,先序遍历由2部分组成:自顶而下的访问最左侧通路的节点自底而上的访问最左侧通路上每一节点的右孩子。其中每一个右孩子也是原创 2021-12-17 01:18:45 · 946 阅读 · 0 评论 -
回溯算法-组合问题-leedcode77组合
/** * @author ch080139 * @date 2021/11/24-1:40 * @Description 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 */public class Solution01 { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> result = new原创 2021-11-24 02:25:35 · 104 阅读 · 0 评论 -
回溯算法-排列问题-leedcode46 全排列
题目给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案/** * @author ch080139 * @date 2021/11/24-1:05 * @Description 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 */public class Solution01 { public List<List<Integer>> permute(int[] nu原创 2021-11-24 02:14:30 · 513 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序-split-trim
思路:(1)把单词中多余空格去掉:包括了单词前端的空格,单词后端的空格,和单词中间的空格。(2)将字符串整体翻转(3)将其中的单词单独翻转例如" I am a coder! ";// 经过第一步之后变为了"I am a coder!";// 经过第二步之后变为了"!redoc a ma I"// 经过第三步之后"coder! a am I"代码实现public class Solution01 { public String reverseWord原创 2021-09-13 20:43:55 · 102 阅读 · 0 评论 -
Java笔试中的输入输出(2)
hasNext()和hasNextLine()hasNextLine()和nextLine()hasNextLine()方法同样看一些说明文档中对方法的描述:如果在扫描器的输入中还有另外一行,就返回true,事实上同样没有返回fasle的情况,如果没有另外一行了,就会阻塞,等待你的输入。两个容易出错的问题问题1:hasNextLine() 和 next() 混用首先看一下以下代码:如果启动代码后,在控制台输入hello回车,会进入几次while循环的代码段中呢?import java.ut原创 2021-08-26 02:05:00 · 224 阅读 · 0 评论 -
Java 笔试中的输入输出(1)
hasNext()和next()输入Scanner类Scannner 类用于处理用户输入输出的类,位于java.util包下,idea会自动导入相关的包:import java.util.Scanner;基本的声明语法:Scanner scan = new Scanner(System.in);hasNext() 方法:最常用的是不带参数的hasNext(),即boolean hasNext();可以看到说明文档中的描述为,如果在这个扫描器的输入中有另外一个完整的token,就返回原创 2021-08-26 00:33:02 · 268 阅读 · 0 评论 -
Leedcode 459. 重复的子字符串
459. 重复的子字符串题目:KMP算法解题思路1)这道题判断一个文本串,是否可以由多个重复的模式串组成。可以使用KMP方法,利用KMP算法中的next表。2)重申一下next表的逻辑语义(获取方法):对于字符串 pattern,对应的next表中索引为 j 的元素 next[j]表示为:子串P[0, j) 中长度最长的相等前后缀的长度。3)如果文本串的长度为 n,标准的KMP next表的最后一项 next[n-1] 表示的是 子串 P[ 0, n-1 ) 的最长相等前后缀的长度,但是我们原创 2021-08-04 20:36:33 · 79 阅读 · 0 评论