力扣牛客每日一题笔记
文章平均质量分 58
记录每日一题的思路以及新的知识点
专打瘸子那条好腿
这个作者很懒,什么都没留下…
展开
-
力扣23题合并K个升序链表
力扣23题合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists原创 2022-05-18 11:36:29 · 434 阅读 · 0 评论 -
牛客试题:用两个栈实现队列
牛客试题:用两个栈实现队列描述用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。数据范围:1000n≤1000要求:存储n个元素的空间复杂度为O(n) ,插入与删除的时间复杂度都是 O(1)示例1输入:[“PSH1”,“PSH2”,“POP”,“POP”]返回值:1,2说明:“PSH1”:代表将1插入队列尾部“PSH2”:代表将2插入队列原创 2022-05-17 20:48:49 · 352 阅读 · 0 评论 -
牛客试题:按之字形顺序打印二叉树
牛客试题:按之字形顺序打印二叉树描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:15000≤n≤1500,树上每个节点的val满足 |val| <= 1500要求:空间复杂度:O(n),时间复杂度:O(n)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]示例1输入:{1,2,3,#,#,4,5}返回值:[[1],[3,2],[4,5]]说明原创 2022-05-17 20:37:42 · 149 阅读 · 0 评论 -
牛客试题:包含min函数的栈
牛客试题:包含min函数的栈描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。此栈包含的方法有:push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素数据范围:操作数量满足0≤n≤300 ,输入的元素满足 ∣val∣≤10000进阶:栈的各个操作的时间复杂度是O(1) ,空间复杂度是 O(n)示例:输入:原创 2022-05-17 20:29:20 · 168 阅读 · 0 评论 -
力扣面试题 04.06. 后继者
力扣面试题 04.06. 后继者思路分析:题目要求寻找二叉搜索树中节点为p节点的下一个节点(中序遍历:先遍历左子树再中间节点再右子树)。解法1:按照二叉树的中序遍历,把遍历的节点依次存入到队列中,再依次取出,当取出的节点等于p时,再取后一个节点就是要求的节点。代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tr原创 2022-05-16 12:01:38 · 279 阅读 · 0 评论 -
力扣面试题 01.05. 一次编辑
力扣面试题 01.05. 一次编辑字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = “pale”second = “ple”输出: True示例 2:输入:first = “pales”second = “pal”输出: False思路分析:首先肯定是分析是否只需要1次或者0次,0次就是输入二者相等的情况。然后如果两个字符串的长度之差超过了1,那么无论怎么编辑都是不能原创 2022-05-13 11:17:05 · 142 阅读 · 0 评论 -
力扣第449题序列化和反序列化二叉搜索树
力扣第449题序列化和反序列化二叉搜索树序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。示例 1:输入:root = [2,1,3]输出:[2,1,3]示例 2:输入:root = []输出原创 2022-05-11 22:06:12 · 280 阅读 · 0 评论 -
力扣433题 最小基因变化
力扣433题 最小基因变化基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 ‘A’、‘C’、‘G’ 和 ‘T’ 之一。假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。例如,“AACCGGTT” --> “AACCGGTA” 就是一次基因变化。另有一个基因库 bank 记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。给你两个基因序列 start 和 end ,以及一个基因库 ban原创 2022-05-07 14:58:01 · 148 阅读 · 0 评论 -
力扣417题太平洋大西洋水流问题
力扣417题太平洋大西洋水流问题题目描述:有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格原创 2022-04-27 17:08:20 · 394 阅读 · 0 评论 -
链表的反转
链表的反转在做一些题的时候需要将链表进行反转。一般有两种方法,使用栈和插入法。1.栈:由于栈的特点是元素先入后出,那么将链表的元素压栈后再弹出就得到了反序。代码如下: public ListNode ReverseList(ListNode head) { Stack<ListNode> stack = new Stack<>(); //遍历链表元素,并将个元素压栈 while (head!=null){原创 2022-04-26 11:29:08 · 304 阅读 · 0 评论 -
力扣819题最常见的单词
力扣819题最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。输入:paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”banned = [“hit”]输出: “ball”解释:“hit原创 2022-04-18 14:52:21 · 135 阅读 · 0 评论 -
链表中的节点每K个一组翻转
链表中的节点每K个一组翻转将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。数据范围: 0≤n≤2000 , 1≤k≤2000 ,链表中每个元素都满足 0≤val≤1000要求空间复杂度 O(1),时间复杂度 O(n)例如:给定的链表是 1→2→3→4→5对于 k = 2 , 你应该返回 2→1→4→3→5对于 k = 3 , 你应该返回 3→2→1→4→5示例1输入:{1,2,原创 2022-04-14 15:53:06 · 698 阅读 · 0 评论 -
力扣第380题插入删除和获取随机元素
力扣第380题插入删除和获取随机元素实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在原创 2022-04-14 10:37:17 · 211 阅读 · 0 评论 -
最富有的资产总量
最富有的资产总量给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6原创 2022-04-14 09:44:11 · 374 阅读 · 0 评论