Leetcode刷题
文章平均质量分 80
今天龟龟刷Leetcode了吗
今天也是要刷Leetcode的龟龟!每天大喊三遍:刷题使我快乐!(企图洗脑
展开
-
算法刷题自记录 | Leetcode572. 另一棵树的子树(树+递归)
题目题目描述:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4,5,1,2,null,n.原创 2022-03-12 16:02:31 · 170 阅读 · 0 评论 -
算法刷题自记录 | Leetcode116,117. 填充每个节点的下一个右侧节点指针I,II(树+链表)
总结了借用链表结构实现的对树的层序遍历类型题。第一类(完美二叉树)Leetcode 116. 填充每个节点的下一个右侧节点指针题目描述:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。...原创 2022-03-12 15:51:54 · 177 阅读 · 0 评论 -
算法刷题自记录 | Leetcode90. 子集II,47. 全排列II,40. 组合总和II(递归+回溯+剪枝)
总结了几类遇到的递归+回溯题。其实总的思路都大差不差,主要是剪枝时需要挨个分析一下。第一类(求子集)Leetcode 90. 子集II题目描述:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]原创 2022-03-12 15:16:11 · 520 阅读 · 0 评论 -
算法刷题自记录 | Leetcode1091. 二进制矩阵中的最短路径(BFS)
题目题目描述:给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:路径途经的所有单元格都的值都是 0 。 路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。畅通路径的长度 是该路径途经的单元格总数。示例 1:原创 2022-03-09 14:47:02 · 411 阅读 · 0 评论 -
算法刷题自记录 | Leetcode200. 岛屿数量,547. 省份数量,797. 所有可能的路径,79. 单词搜索(DFS题型汇总)
为了方便以后回顾进行汇总,目前总结了DFS基于栈的非递归写法以及递归写法。第一类(非递归+栈)Leetcode 200.岛屿数量题目描述:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"...原创 2022-03-08 22:31:25 · 278 阅读 · 0 评论 -
算法刷题自记录 | Leetcode704. 二分查找,35. 搜索插入位置,34. 在排序数组中查找元素的第一个和最后一个位置(二分查找题型总结)
基于这几天刷的题中遇到的比较经典的二分查找题进行汇总,目前总结出了两类二分查找的题型以方便以后回顾,后续碰到的会继续更新:1. Leetcode 704 & 35:整数数组nums有序、元素无重复,target不一定存在于数组中;2. Leetcode 34:整数数组nums有序、元素有重复,target不一定存在于数组中。第一类(元素无重复)Leetcode 704.二分查找题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个...原创 2022-03-08 14:26:13 · 182 阅读 · 0 评论 -
算法刷题自记录 | Leetcode713. 乘积小于K的子数组(滑动窗口,窗口大小不固定)
题目题目描述:给定一个正整数数组 nums 和整数 k 。请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k = 0输出: 0提.原创 2022-03-06 14:43:55 · 165 阅读 · 0 评论 -
算法刷题自记录 | Leetcode438. 找到字符串中所有字母异位词(滑动窗口)
题目题目描述:给定两个字符串s和 p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:输入: s = "abab", p = ...原创 2022-03-06 13:50:55 · 229 阅读 · 0 评论 -
算法刷题自记录 | Leetcode844. 比较含退格的字符串(双指针)
题目题目描述:给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:s = "ab#c", t = "ad#c"输出:true解释:s 和 t 都会变成 "ac"。示例 2:输入:s = "ab##", t = "c#d#"输出:true解释:s 和 t 都会变成 ""。示例 3:输入:s = "a#c", t = "b"输出:false解原创 2022-03-04 16:27:00 · 258 阅读 · 0 评论