自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(164)
  • 收藏
  • 关注

原创 颜色分类(中等)

颜色分类-排序

2022-06-24 11:25:39 285 1

原创 编辑距离(困难)

编辑距离-动态规划

2022-06-22 13:34:37 255

原创 合并区间(中等)

合并区间-排序

2022-06-21 12:16:29 212

原创 字母异位词分组(中等)

字母异位词分组-hashmap&排序

2022-06-21 11:09:17 161

原创 全排列(中等)

全排列-回溯

2022-06-20 16:04:53 74

原创 接雨水(困难)

接雨水-双指针

2022-06-20 14:08:35 72

原创 组合总和(中等)

剪枝+回溯

2022-06-17 15:37:58 65

原创 在排序数组中查找元素的第一个和最后一个位置(中等)

二分查找

2022-06-17 10:28:45 114

原创 搜索旋转排序数组(中等)

搜索旋转排序数组-二分查找

2022-06-16 20:21:59 66

原创 下一个排列(中等)

下一个排序-顺序对&交换&反转

2022-06-16 10:48:13 70

原创 电话号码的字母组合(中等)

电话号码的字母组合-回溯

2022-06-15 20:16:04 164

原创 三数之和(中等)

三数之和-双重循环+指针

2022-06-15 17:21:36 75

原创 盛最多水的容器(中等)

纳水量最大的容器-双指针

2022-06-15 11:39:48 91

原创 无重复字符的最长子串(中等)

题目描述示例1示例2示例3做题思路代码

2022-06-14 10:51:16 110

原创 面试题 04.10. 检查子树(中等)

题目描述检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。示例1 输入:t1 = [1, 2, 3], t2 = [2] 输出:true示例2 输入:t1 = [1, null, 2, 4], t2 = [3, 2] 输出:false示例说明

2022-05-18 15:58:34 132

原创 面试题 04.09. 二叉搜索树序列(困难)

题目描述从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉搜索树root,输出所有可能生成此树的数组。示例1输入: root = [2,1,3]输出: [[2,1,3],[2,3,1]]解释: 数组 [2,1,3]、[2,3,1] 均可以通过从左向右遍历元素插入树中形成以下二叉搜索树 2 / \ 1 3示例2输入: root = [4,1,null,null,3,2...

2022-05-16 16:55:37 141

原创 面试题 04.08. 首个共同祖先(中等)

题目描述设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 3 / \ 5 1 / \ / \6 2 0 8 / \ 7 4示例1输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5

2022-05-15 10:06:20 88

原创 面试题 04.06. 后继者(中等)

题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例1输入: root = [2,1,3], p = 1 2 / \1 3输出: 2示例2输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4/ 1输出: null做题思路利用搜索二...

2022-05-15 09:53:33 101

原创 面试题 04.05. 合法二叉搜索树(中等)

题目描述实现一个函数,检查一棵二叉树是否为二叉搜索树。示例1输入: 2 / \ 1 3输出: true示例2输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。做题思路对二叉搜索树进行中序遍历得到的序列为递增序列。代码/** * Definition f...

2022-05-14 11:23:18 140

原创 面试题 04.04. 检查平衡性(简单)

题目描述实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例1给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例2给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3/ \4 4返回false 。...

2022-05-14 10:32:31 226

原创 面试题 04.03. 特定深度节点链表(中等)

题目描述给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为D,则会创建出D个链表)。返回一个包含所有深度的链表的数组。示例输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8输出:[[1],[2,3],[4,5,7],[8]]做题思路按照题目要求,我们需要将二叉树进行层序遍历,并将每层节点...

2022-05-13 16:10:36 90

原创 面试题 04.02. 最小高度树(简单)

题目描述给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5做题思路题目要求创建一棵高度最小的二叉搜索树,即创建一棵平衡二叉树,由于元素按升序排列,所以...

2022-05-13 15:15:26 160

原创 面试题 04.01. 节点间通路(中等)

题目描述节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2输出:true示例2输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]], start = 0, t..

2022-05-11 15:46:47 154

原创 面试题 03.06. 动物收容所(简单)

题目描述动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。enqueue方法有一个animal参数,a

2022-05-10 10:37:32 275

原创 面试题 03.05. 栈排序(中等)

题目描述栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek返回 -1。示例1输入:["SortedStack", "push", "push", "peek", "pop", "peek"][[], [1], [2], [], [], []]输出:[null,null,null,1,null,2]示例2...

2022-05-09 20:33:03 77

原创 面试题 03.04. 化栈为队(简单)

题目描述实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false做题思路同用两个栈实现队列(简单)_黑黑藏不住的博客-CSDN博客代码class MyQueue { Stack<Int..

2022-05-09 15:50:30 192

原创 面试题 03.03. 堆盘子(中等)

题目描述堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push()和SetOfStacks.pop()应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。 进阶:实现一个popAt(int index)方法,根据指定的子栈,执行pop操作。当某个栈

2022-05-08 20:43:16 103

原创 面试题 03.02. 栈的最小值(简单)

题目描述请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); ..

2022-05-08 11:37:07 197

原创 面试题 03.01. 三合一(简单)

题目描述三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1输入:["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"][[1], [0, 1], .

2022-05-06 21:27:48 92

原创 面试题 02.08. 环路检测(中等)

题目描述给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。示例1输入:head = [3,2,0,-4], pos = 1输出:tail con.

2022-05-06 15:37:34 69

原创 面试题 02.07. 链表相交(简单)

题目描述给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。示例1输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersect...

2022-05-05 10:29:55 133

原创 面试题 02.06. 回文链表(简单)

题目描述编写一个函数,检查输入的链表是否是回文的。示例1输入: 1->2输出: false 示例2输入: 1->2->2->1输出: true 做题思路1.借助栈:将链表节点对应的值存进栈中,从头节点开始遍历链表,比较链表的值与出栈时的值是否相等。2.先找到链表中点,然后反转链表右半部分,比较左半部分和右半部分的对应的值是否相等。反转链表过程:代码1(借助栈)/** * Definition for sing

2022-05-03 23:32:03 590

原创 面试题 02.05. 链表求和(中等)

题目描述给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912代码/** * Definition for singly-linked list. * public class ListNode { *

2022-05-03 22:20:14 567

原创 面试题 02.04. 分割链表(中等)

题目描述给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你不需要保留每个分区中各节点的初始相对位置。示例1输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例2输入:head = [2,1], x = 2输出:[1,2]做题思路整体思路为设置快慢指针,慢指针永远比快指针慢一步,主要用于协助链表的变换(由于题目要求只要..

2022-04-30 10:15:22 117

原创 面试题 02.03. 删除中间节点(简单)

题目描述若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点c(位于单向链表a->b->c->d->e->f中),将其删除后,剩余链表为a->b->d->e->f示例输入:节点5(位于单向链表4->5->1->9中)输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为...

2022-04-29 21:49:58 62

原创 面试题 02.02. 返回倒数第 k 个节点(简单)

题目描述给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例输入: 1->2->3->4->5 和 k = 2输出: 4做题思路解题思路参照删除链表的倒数第N个结点(中等)_黑黑藏不住的博客-CSDN博客设置快慢指针,让快指针先走k步(先考虑是否走到了空,若走到了空就证明需要返回的是首元素对应的值),然后再让快慢指针同时右移,快指针永远比慢指针多走k步,当快指针指向null时,慢指针指向的就是倒数第k个元素。代码/*..

2022-04-29 21:27:20 723

原创 面试题 02.01. 移除重复节点(简单)

题目描述编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2 输入:[1, 1, 1, 1, 2] 输出:[1, 2]做题思路借助set集合去重,若遇到set集合中已经包含的元素,则在链表上去掉该元素;否则将新元素添加进set集合,指针后移。代码/** * Definition for singly-linked list. * public class

2022-04-29 18:39:30 577

原创 面试题 01.09. 字符串轮转(简单)

题目描述字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True示例2输入:s1 = "aa", s2 = "aba" 输出:False做题思路1. 错误提示:容易和面试题 01.02. 判定是否互为字符重排(简单)_黑黑藏不住的博客-CSDN博客混淆,字符重排

2022-04-29 15:49:11 552

原创 面试题 01.08. 零矩阵(中等)

题目描述编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例1输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]示例2输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]]做题思路1. 首次提交踩的坑:直接...

2022-04-29 11:19:26 215

原创 面试题 01.07. 旋转矩阵(中等)

题目描述给你一幅由N × N矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例1给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例2给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, ...

2022-04-28 22:11:46 240

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除