分割回文串(回溯)
摘要:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]] class Solution { publi
阅读全文
posted @
2025-01-01 11:21
_月生
阅读(2)
推荐(0) 编辑
单词搜索(回溯)
摘要:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示
阅读全文
posted @
2025-01-01 10:56
_月生
阅读(4)
推荐(0) 编辑
括号生成(回溯)
摘要:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] class Soluti
阅读全文
posted @
2024-12-31 22:39
_月生
阅读(4)
推荐(0) 编辑
组合总和(回溯)
摘要:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如果
阅读全文
posted @
2024-12-31 21:21
_月生
阅读(3)
推荐(0) 编辑
电话号码的字母组合(回溯)
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce"
阅读全文
posted @
2024-12-31 20:26
_月生
阅读(4)
推荐(0) 编辑
子集(回溯)
摘要:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2
阅读全文
posted @
2024-12-30 16:27
_月生
阅读(2)
推荐(0) 编辑
全排列(回溯)
摘要:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1] 输
阅读全文
posted @
2024-12-30 14:34
_月生
阅读(4)
推荐(0) 编辑
实现 Trie (前缀树)(字典树)
摘要:Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。 void insert(String word) 向前缀树中插入字符串 w
阅读全文
posted @
2024-12-29 15:10
_月生
阅读(42)
推荐(0) 编辑
课程表(深度优先遍历/拓扑排序)
摘要:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 b
阅读全文
posted @
2024-12-29 14:56
_月生
阅读(14)
推荐(0) 编辑
腐烂的橘子(广度优先遍历)
摘要:在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。
阅读全文
posted @
2024-12-29 14:00
_月生
阅读(8)
推荐(0) 编辑
岛屿数量(深度优先遍历)
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], ["
阅读全文
posted @
2024-12-29 12:15
_月生
阅读(7)
推荐(0) 编辑
二叉树中的最大路径和(递归)
摘要:二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1
阅读全文
posted @
2024-12-29 11:26
_月生
阅读(11)
推荐(0) 编辑
二叉树的最近公共祖先(递归)
摘要:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2
阅读全文
posted @
2024-12-25 16:51
_月生
阅读(11)
推荐(0) 编辑
路径总和 III(递归)
摘要:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,n
阅读全文
posted @
2024-12-25 16:40
_月生
阅读(8)
推荐(0) 编辑
从前序与中序遍历序列构造二叉树(递归)
摘要:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出:
阅读全文
posted @
2024-12-25 11:07
_月生
阅读(29)
推荐(0) 编辑
二叉树展开为链表(先序遍历)
摘要:给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入:root = [1,2,5,3,4,null,
阅读全文
posted @
2024-12-25 10:44
_月生
阅读(11)
推荐(0) 编辑
二叉树的右视图(层次遍历)
摘要:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root = [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例 2: 输入:root = [1,2,3,4,null,null,null,5
阅读全文
posted @
2024-12-25 10:06
_月生
阅读(2)
推荐(0) 编辑
二叉搜索树中第 K 小的元素(中序遍历)
摘要:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root = [3,1,4,null,2], k = 1 输出:1 示例 2: 输入:root = [5,3,6,2,4,null,null,1], k = 3
阅读全文
posted @
2024-12-24 18:56
_月生
阅读(14)
推荐(0) 编辑
验证二叉搜索树(递归/中序遍历)
摘要:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2
阅读全文
posted @
2024-12-24 18:08
_月生
阅读(20)
推荐(0) 编辑
将有序数组转换为二叉搜索树(递归)
摘要:给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵平衡二叉搜索树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入:num
阅读全文
posted @
2024-12-24 17:35
_月生
阅读(13)
推荐(0) 编辑