![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
Grayson Zhang
热爱学习
展开
-
(leetcode)1641. 统计字典序元音字符串的数目
1641. 统计字典序元音字符串的数目一、题目描述给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。示例 1:输入:n = 1输出:5解释:仅由元音组成的 5 个字典序字符串为 ["a","e","i","o","u"]示例 2:输入:n = 2输出:15解释:仅由元音组成的 15 个原创 2022-02-22 17:49:17 · 259 阅读 · 0 评论 -
剑指 Offer II 085. 生成匹配的括号
剑指 Offer II 085. 生成匹配的括号一、题目描述正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8二、解题dfs深搜+双指针的回朔通过递归的顺序来完成括号的添加三、代码class Solution: def原创 2022-02-20 16:29:31 · 370 阅读 · 0 评论 -
(leetcode)102. 二叉树的层序遍历
102. 二叉树的层序遍历一、题目描述给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <= Node.val <= 1000二、解题是标原创 2022-02-18 17:37:12 · 110 阅读 · 0 评论 -
(leetcode)111. 二叉树的最小深度
111. 二叉树的最小深度一、题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000二、解题先针对特殊情况原创 2022-02-17 15:27:22 · 137 阅读 · 0 评论 -
(leetcode)129. 求根节点到叶节点数字之和
129. 求根节点到叶节点数字之和一、题目描述给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字原创 2022-02-16 22:37:33 · 146 阅读 · 0 评论 -
225. 用队列实现栈
225. 用队列实现栈难度 简单题目描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek原创 2022-01-24 22:27:34 · 221 阅读 · 0 评论 -
1267. 统计参与通信的服务器
1267. 统计参与通信的服务器题目描述:https://leetcode-cn.com/problems/count-servers-that-communicate/解题:计数class Solution: def countServers(self, grid: List[List[int]]) -> int: # 定义变量 m, n = len(grid), len(grid[0]) count_m, count_n = [0] * m原创 2022-01-19 21:54:58 · 290 阅读 · 0 评论 -
138. 复制带随机指针的链表(左神)
138. 复制带随机指针的链表给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random原创 2021-07-25 09:32:12 · 59 阅读 · 0 评论 -
160. 相交链表
160. 相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。解题:单链表的基本问题法一:哈希集用一个集合存下headA中所有的结点,然后检查headB中的结点是否在集合中时间复杂度O(n+m-k)(k是公共长度),额外空间复杂度O(n or m)法二:双指针令headA为A+K,headB为B+K,K为公共部分我们定义两个指针,指针1,遍历完headA后(行走了A+K)进入到headB中同样的,指原创 2021-07-24 21:58:41 · 65 阅读 · 0 评论 -
1877. 数组中最大数对和的最小值
1877. 数组中最大数对和的最小值一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。请你在最优数对划分的方案下原创 2021-07-24 21:42:31 · 72 阅读 · 0 评论 -
1838. 最高频元素的频数
1838. 最高频元素的频数元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例 2:原创 2021-07-24 21:23:43 · 65 阅读 · 0 评论 -
6. Z 字形变换(模拟)
6. Z 字形变换题目描述将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例原创 2021-07-20 21:41:03 · 96 阅读 · 0 评论 -
264. 丑数 II
264. 丑数 II给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数。提示:1 <= n <= 1690解题:最小堆首先,第一个反应是暴力解,先用分解质因数的方法写一个 判断一个数是否为丑数的函数 ,最后便原创 2021-07-14 21:53:45 · 72 阅读 · 0 评论 -
300. 最长递增子序列(动态规划)
300. 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums =原创 2021-07-13 15:39:02 · 107 阅读 · 0 评论 -
Day1:832. 翻转图像
832. 翻转图像难度:简单题目描述给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入:[[1,1,0],[1,0,1],[0,0,0]]输出:[[1,0,0],[0,1,0],[1,1,1]]解释:首先翻原创 2021-02-24 21:19:00 · 133 阅读 · 0 评论