随笔分类 - 基础递归
在快速排序以及树结构的遍历中需要使用到的基础递归
摘要:题目来源 47. 全排列 II 题目详情 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入: nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入: nums = [1,2,3] 输出: [[1
阅读全文
摘要:题目来源 114. 二叉树展开为链表 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入
阅读全文
摘要:题目来源 139. 单词拆分 题目详情 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意: 不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s = "leetcode", wordDict
阅读全文
摘要:题目来源 22. 括号生成 题目详情 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入: n = 3 输出: ["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入: n = 1
阅读全文
摘要:题目来源 17. 电话号码的字母组合 题目详情 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入: digits = "23" 输出: ["ad","ae","af
阅读全文
摘要:题目来源 494. 目标和 题目详情 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得
阅读全文
摘要:题目来源 437. 路径总和 III 题目详情 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1:
阅读全文
摘要:题目来源 112. 路径总和 题目详情 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点
阅读全文
摘要:题目来源 394. 字符串解码 题目详情 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且
阅读全文
摘要:题目来源 LeetCode_46 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入: nums = [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
阅读全文
摘要:145. 二叉树的后序遍历 LeetCode_145 题目描述 递归解法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right;
阅读全文
摘要:94. 二叉树的中序遍历 LeetCode_94 题目描述 解法一:递归解法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right
阅读全文
摘要:40. 组合总和 II LeetCode_40 题目描述 题解分析 此题和 39. 组合总和 + 递归 + 回溯 + 存储路径很像,只不过题目修改了一下。 题解的关键是首先将候选数组进行排序,然后记录每个数的出现次数。 将去重后的数组当成是新的候选数组进行递归搜索。 回溯的时候注意是在最后将相同数字
阅读全文
摘要:39. 组合总和 LeetCode_39 题目描述 题解分析 这是一道面试常考题:https://www.nowcoder.com/discuss/582025?source_id=discuss_experience_nctrack&channel=-1 题目考察的是递归搜索,这里使用的方法是回溯
阅读全文
摘要:206. 反转链表 LeetCode_206 题目详情 解法一:迭代法 package com.walegarrett.interview; /** * @Author WaleGarrett * @Date 2021/2/22 22:30 */ import java.util.List; /**
阅读全文
摘要:剑指 Offer 64. 求1+2+…+n Offer_64 题目描述 题解分析 使用&&逻辑短路规则来终止循环 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/14 21:36 */ /** * 题目描
阅读全文
摘要:剑指 Offer 36. 二叉搜索树与双向链表 Offer_36 题目描述 题解分析 本题考查的是二叉树的中序遍历以及二叉排序树的特征(二叉排序树的中序遍历序列是升序序列) 利用排序二叉树中序遍历的性质,可以设置一个前置指针和当前指针。 再遍历完当前结点的所有左子树后,可以得到一个数据值仅次与当前结
阅读全文
摘要:剑指 Offer 26. 树的子结构 Offer 26 题目详情: 题解分析 解法一: 第一种比较容易想到的解法就是查看这两棵树的前序遍历和中序遍历序列是否都匹配。 因为前序遍历和中序遍历可以唯一确定一棵树,所以这种方法是有效的,尽管有些复杂。 解法二: 题目是要求一个树是否是另一棵树的子结构。 如
阅读全文
摘要:剑指 Offer 17. 打印从1到最大的n位数 Offer 17 题目解析: 暴力解法 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/1/25 16:16 */ public class Offer_17
阅读全文
摘要:剑指 Offer 13. 机器人的运动范围 题目链接 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2020/12/9 9:49 */ public class Offer_13 { int m, n; boolea
阅读全文