LeetCode每日一题
文章平均质量分 55
练习算法和编程能力,LeetCode每日一题
Andy_ss
这个作者很懒,什么都没留下…
展开
-
LeetCode每日一题2021-7-31 987. 二叉树的垂序遍历
LeetCode 987. 二叉树的垂序遍历题目描述给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。对位于 (row, col) 的每个结点而言,其左右子结点分别位于 (row + 1, col - 1) 和 (row + 1, col + 1) 。树的根结点位于 (0, 0) 。二叉树的 垂序遍历 从最左边的列开始直到最右边的列结束,按列索引每一列上的所有结点,形成一个按出现位置从上到下排序的有序列表。如果同行同列上有多个结点,则按结点的值从小到大进行排序。返回二叉树的原创 2021-08-01 00:47:46 · 291 阅读 · 0 评论 -
LeetCode每日一题2020-9-29 145. 二叉树的后序遍历
LeetCode每日一题2020-9-29 145. 二叉树的后序遍历题目描述给定一个二叉树,返回它的 后序 遍历。解题思路可以使用递归的方法,先遍历左子树,再遍历右子树。题解代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(原创 2020-09-29 23:36:42 · 169 阅读 · 0 评论 -
LeetCode每日一题 2020-9-28 117.填充每个字节的下一个右侧结点指针II广度优先搜索,队列
LeetCode每日一题 2020-9-28 117.填充每个字节的下一个右侧结点指针II广度优先搜索,队列题目描述给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递原创 2020-09-28 23:21:52 · 129 阅读 · 0 评论 -
LeetCode每日一题 2020-9-27 235.二叉搜索树的最近公共祖先 ,二叉搜索树
LeetCode每日一题 2020-9-27 235.二叉搜索树的最近公共祖先 ,二叉搜索树题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0原创 2020-09-28 00:00:17 · 125 阅读 · 0 评论 -
LeetCode每日一题 2020-9-26 113.路径总和II 深搜,二叉树的深度优先遍历
LeetCode每日一题 2020-9-26 113.路径总和II 深搜,二叉树的深度优先遍历题目描述给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum-ii解题思路本题用深度优先搜索的方法,记录根节点到叶子节点路径上的结点值和路径和最后比较就可以解题。本题中没有说明结点值的取值范围,否则可以使用剪枝。原创 2020-09-26 23:04:07 · 195 阅读 · 0 评论 -
LeetCode每日一题2020-9-21 538.把二叉搜索树转换为累加树,二叉树遍历顺序问题
LeetCode每日一题 538.把二叉搜索树转换为累加树,二叉树遍历顺序问题题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:解题思路排序树的先序遍历就是从小到大遍历,如果翻过来便是从大到小了,也就是先遍历右子树然后遍历根最后遍历左子树。在反序遍历的过程中需要记录已遍历过的结点的和,然后加到后续遍历的节点上。题解代码/** * Definition for a原创 2020-09-21 22:22:02 · 124 阅读 · 0 评论 -
LeetCode每日一题 2020-9-20 78.子集 dfs,满二叉树
LeetCode每日一题 2020-9-20 78.子集 dfs,满二叉树题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:解题思路一个集合的幂集总共包含2n,联想满二叉树,一颗高度为n的满二叉树的叶子结点总共有2n个叶子结点,所以可以用一颗满二叉树来表示一个集合的幂集。如下图(0代表不取第n个数,1代表取第n个数):题解代码class Solution {public:void dfs(int t,vector&原创 2020-09-20 23:29:09 · 165 阅读 · 0 评论 -
LeetCode每日一题 404.左叶子之和 递归
LeetCode每日一题 404.左叶子之和 递归题目描述计算给定二叉树的所有左叶子之和。示例:解题思路本题可以使用递归的方法遍历题目给出的树,然后在遍历的过程中记录是左孩子还是有孩子,如果是左孩子,且是叶子节点,则将其加入最后的结果。注意,本题中如果只有一个根节点,不能加入结果。题解代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;原创 2020-09-19 23:53:12 · 187 阅读 · 0 评论 -
LeetCode每日一题 47.全排列II深搜dfs
LeetCode每日一题 47.全排列II深搜dfs** 题目描述**给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]解题思路题解代码class Solution {public: void dfs(int t,vector<int> &nums,set<vector<int>> &ans){ if(t>=nu原创 2020-09-18 23:56:45 · 593 阅读 · 0 评论 -
LeetCode每日一题 2020-9-14 94.二叉树的中序遍历 递归,中序遍历
LeetCode每日一题 2020-9-14 94.二叉树的中序遍历 递归,中序遍历题目描述给定一个二叉树,返回它的中序 遍历。示例:解题思路本题是一个比较常规的二叉树遍历题,可使用递归的方法。递归的结束条件可设为传入的节点为空,先递归遍历左子树结点,直至退出时遍历此结点,然后递归遍历右子树结点。题解代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode原创 2020-09-14 23:20:44 · 149 阅读 · 0 评论 -
LeetCode每日一题 79.单词搜索 回溯dfs应用
LeetCode每日一题 79.单词搜索 回溯dfs应用题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 t原创 2020-09-13 23:51:41 · 141 阅读 · 0 评论 -
LeetCode每日一题 2020-9-12 637.二叉树的平均值 队列,层次遍历,广度优先搜索
LeetCode每日一题 2020-9-12 637.二叉树的平均值 队列,层次遍历,广度优先搜索题目描述给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/avera原创 2020-09-12 23:52:01 · 209 阅读 · 1 评论 -
LeetCode每日一题 2020-9-11 216.组合总和III 回溯dfs 子集树 +剪枝
LeetCode每日一题 2020-9-11 216.组合总和II 回溯dfs+剪枝题目描述找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]来源:力扣(LeetCode)链接:https://le原创 2020-09-11 23:42:12 · 167 阅读 · 0 评论 -
LeetCode每日一题 40.组和总和II 回溯dfs+去重
LeetCode每日一题 40。组和总和II 回溯dfs+去重题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2原创 2020-09-10 22:23:10 · 145 阅读 · 0 评论 -
LeetCode每日一题 2020-9-9 39.组合总和 回溯dfs
LeetCode每日一题 2020-9-9 39.组合总和 回溯dfs题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2原创 2020-09-09 22:26:55 · 297 阅读 · 0 评论 -
LeetCode每日一题 2020-9-8 77.组合——回溯法dfs+剪枝
LeetCode每日一题 2020-9-8 77.组合——回溯法dfs+剪枝题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题思路本题可用回溯法解决,可采用子集树的结构,如下图所示。可使用一棵高度为N+1子集数来表示从N个数中选择的所有情况,其中0代表不取这个数,1代表取这个数,最后的叶子结点便是选出来的结果。在回溯过程中,原创 2020-09-08 19:18:59 · 522 阅读 · 0 评论 -
LeetCode每日一题 2020-9-7 347.前K个高频元素,map(哈希),排序
LeetCode每日一题 2020-9-7 347.前K个高频元素,map(哈希),排序题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯原创 2020-09-07 23:59:41 · 834 阅读 · 0 评论 -
LeetCode每日一题2020-9-6 107.二叉树的层次遍历II 广度优先搜索
LeetCode每日一题2020-9-6 107.二叉树的层次遍历II 广度优先搜索题目描述给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]解题思路本题涉及树的层次遍历,也就是广度优先遍历。这里需要用到队列这一数据结构,遍历过程中需要记录当前层的结点,然后从左往右依次加入当前层的结点的孩子结点,原创 2020-09-06 21:28:59 · 149 阅读 · 0 评论 -
LeetCode每日一题 2020-9-5 60.第k个排列
LeetCode每日一题 2020-9-5 6.第k个排列题目描述给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: “213”示例 2:输入: n = 4, k原创 2020-09-05 18:06:11 · 237 阅读 · 0 评论 -
LeetCode每日一题 2020-9-4 257二叉树的所有路径
leetcode每日一题 257. 二叉树的所有路径题目描述给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ 2 35输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解题思路本题考察二叉树的深度优先搜索,可使用回溯法对给定二叉树进行深搜,注意搜索过程中保存路径上的结点信息,当到达叶子节点时生成路径,并回溯继续搜索原创 2020-09-05 00:07:36 · 170 阅读 · 0 评论