面试题
冷酷的摸鱼小将
这个作者很懒,什么都没留下…
展开
-
力扣 面试题 10.02. 变位词组
题目编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。注意:本题相对原题稍作修改示例输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/group-anagrams-lcci著作权归领扣网络所有。商业原创 2022-02-18 00:07:59 · 128 阅读 · 0 评论 -
力扣 面试题 16.02. 单词频率
题目设计一个方法,找出任意指定单词在一本书中的出现频率。你的实现应该支持如下操作:WordsFrequency(book)构造函数,参数为字符串数组构成的一本书get(word)查询指定单词在书中出现的频率示例WordsFrequency wordsFrequency = new WordsFrequency({“i”, “have”, “an”, “apple”, “he”, “have”, “a”, “pen”});wordsFrequency.get(“you”); //返回0,"you原创 2022-02-17 23:48:37 · 98 阅读 · 0 评论 -
力扣 面试题 17.19. 消失的两个数字
⭐题解:https://leetcode.cn/problems/missing-two-lcci/solution/zhua-wa-mou-si-by-muse-77-pqe5/给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?链接:https://leetcode-cn.com/problems/missing-two-lcci。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。以任意顺序返回这两个数字均可。原创 2022-02-17 23:43:12 · 170 阅读 · 0 评论 -
力扣 面试题 17.09. 第 k 个数
⭐题解:https://leetcode.cn/problems/get-kth-magic-number-lcci/solution/zhua-wa-mou-si-by-muse-77-x2i4/有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。链接:https://leetcode-cn.com/problems/get-kth-magic-number-lcci。原创 2022-02-09 16:17:26 · 162 阅读 · 0 评论 -
力扣 面试题 10.11. 峰与谷
题目在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例输入: [5, 3, 1, 2, 3]输出: [5, 1, 3, 2, 3]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/peaks-and-valleys-lcci著作权归领扣网络所有。商原创 2022-02-11 15:18:03 · 394 阅读 · 0 评论 -
力扣 面试题 02.08. 环路检测
题目给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。示例输入:head = [3,2,0,-4], pos = 1输出:tail connects to node原创 2022-02-15 19:28:33 · 118 阅读 · 0 评论 -
力扣 面试题 08.04. 幂集
题目幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/power-set-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:回溯Java实现class Sol原创 2022-02-04 15:25:14 · 154 阅读 · 0 评论 -
力扣 面试题 16.19. 水域大小
题目你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例输入:[[0,2,1,0],[0,1,0,1],[1,1,0,1],[0,1,0,1]]输出: [1,2,4]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pond-sizes-lcc原创 2022-02-02 22:18:04 · 388 阅读 · 0 评论 -
力扣 面试题 04.12. 求和路径
题目给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。示例给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:原创 2022-02-02 22:00:44 · 111 阅读 · 0 评论 -
力扣 面试题 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]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/list-of-depth-lcci原创 2022-02-02 21:51:11 · 80 阅读 · 0 评论 -
力扣 面试题 02.03. 删除中间节点
题目若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f示例输入:节点 5 (位于单向链表 4->5->1->9 中)输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1->原创 2022-02-02 21:49:47 · 125 阅读 · 0 评论 -
力扣 面试题 01.08. 零矩阵
题目编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zero-matrix-lc原创 2022-02-02 21:47:45 · 478 阅读 · 0 评论 -
力扣 面试题 16.21. 交换和
题目给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]输出: [1, 3]输入: array1 = [1, 2, 3], array2 = [4, 5, 6]输出: []来源:力扣(LeetC原创 2022-01-26 20:19:36 · 98 阅读 · 0 评论 -
力扣 面试题 16.17. 连续数列
题目给定一个整数数组,找出总和最大的连续数列,并返回总和。示例输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contiguous-sequence-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:原创 2022-01-25 15:37:01 · 211 阅读 · 0 评论 -
力扣 面试题 10.09. 排序矩阵查找
题目matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 target = 20,返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sorted-matrix-search-lcci著作权原创 2022-01-25 15:28:32 · 208 阅读 · 0 评论 -
力扣 面试题 08.03. 魔术索引
题目魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1:输入:nums = [0, 2, 3, 4, 5]输出:0说明: 0下标的元素为0输入:nums = [1, 1, 1]输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/magic-index原创 2022-01-24 22:48:47 · 167 阅读 · 0 评论 -
力扣 面试题 04.04. 检查平衡性
题目实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。给定二叉树 [1,2,2,3,3,null,null,4,4]1/ 2 2/ 3 3/ 4 4返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/check-ba原创 2022-01-22 21:18:23 · 64 阅读 · 0 评论 -
力扣 面试题 16.24. 数对和
题目设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。示例输入: nums = [5,6,5], target = 11输出: [[5,6]]输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pairs-with-sum-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:哈希表原创 2022-01-21 16:08:47 · 134 阅读 · 0 评论 -
力扣 面试题 17.14. 最小K个数
题目设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/smallest-k-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:优先队列Java实现class Solution { public int[] smallestK(int[原创 2022-01-21 15:50:11 · 83 阅读 · 0 评论 -
力扣 面试题 08.02. 迷路的机器人
题目设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。网格中的障碍物和空位置分别用 1 和 0 来表示。返回一条可行的路径,路径由经过的网格的行号和列号组成。左上角为 0 行 0 列。如果没有可行的路径,返回空数组。示例输入:[[0,0,0],[0,1,0],[0,0,0]]输出: [[0,0],[0,1],[0,2],[1,2],[2,2]]解释:输入中标原创 2022-01-21 15:32:33 · 222 阅读 · 0 评论 -
力扣 面试题 08.11. 硬币
题目硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+1来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2022-01-20 22:05:58 · 116 阅读 · 0 评论 -
力扣 面试题 04.05. 合法二叉搜索树
题目实现一个函数,检查一棵二叉树是否为二叉搜索树。示例输入:2/ 1 3输出: true输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/legal-binary-search-tree-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2022-01-19 21:07:25 · 223 阅读 · 0 评论 -
力扣 面试题 16.15. 珠玑妙算
题目珠玑妙算游戏(the game of master mind)的玩法如下。计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB。要是猜对某个槽的颜色,则算一次“猜中”;要是只猜对颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。给定一种颜色组合solution和一个猜测guess,编写一个方法,返回猜中和伪原创 2022-01-17 21:10:28 · 121 阅读 · 0 评论 -
力扣 面试题 04.06. 后继者
题目设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例输入: root = [2,1,3], p = 12/ 1 3输出: 2输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \3 6/ 2 4/1输出: null来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/successor-原创 2022-01-16 21:02:02 · 339 阅读 · 0 评论 -
力扣 面试题 05.07. 配对交换
题目配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例输入:num = 2(或者0b10)输出 1 (或者 0b01)输入:num = 3输出:3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/exchange-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:位运算1、分别提取奇数位、偶数位。2、奇数位左移一位,偶数位原创 2022-01-16 19:44:51 · 208 阅读 · 0 评论 -
力扣 面试题 10.01. 合并排序的数组
题目给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sorted-merge-lcci著作权归领扣网络所有。商业转载请联系官方授原创 2022-01-15 22:07:42 · 80 阅读 · 0 评论 -
力扣 面试题 02.02. 返回倒数第 k 个节点
题目实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例输入: 1->2->3->4->5 和 k = 2输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:快慢指针Java实现class Solution { publ原创 2022-01-15 21:44:15 · 138 阅读 · 0 评论 -
力扣 面试题 01.04. 回文排列
题目给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例输入:“tactcoa”输出:true(排列有"tacocat"、“atcocta”,等等)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:哈原创 2022-01-14 21:12:32 · 101 阅读 · 0 评论 -
力扣 面试题 03.05. 栈排序
题目栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。示例输入:[“SortedStack”, “push”, “push”, “peek”, “pop”, “peek”][[], [1], [2], [], [], []]输出:[null,null,null,1,null,2]输入:[“SortedStac原创 2022-01-14 20:58:32 · 72 阅读 · 0 评论 -
力扣 面试题 03.06. 动物收容所
题目动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。enqueue方法有一个animal参数,animal原创 2022-01-14 20:30:58 · 134 阅读 · 0 评论 -
力扣 面试题 03.04. 化栈为队
题目实现一个MyQueue类,该类用两个栈来实现一个队列。示例MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/implement-queue-using-stacks-lcci著作原创 2022-01-14 17:35:07 · 84 阅读 · 0 评论 -
力扣 面试题 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(); --&g原创 2022-01-14 16:53:05 · 132 阅读 · 0 评论 -
力扣 面试题 03.01. 三合一
题目三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例输入:[“TripleInOne”, “push”, “push”, “pop”, “pop”, “pop”, “isEmpty”][[1], [0, 1], [0, 2], [0],原创 2022-01-13 21:39:54 · 169 阅读 · 0 评论 -
力扣 面试题 05.06. 整数转换
题目整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。示例输入:A = 29 (或者0b11101), B = 15(或者0b01111)输出:2输入:A = 1,B = 2输出:2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-integer-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:位运算统计不同的位数,就是需要改变的位数。Java实现class So原创 2022-01-09 17:26:24 · 142 阅读 · 0 评论 -
力扣 面试题 17.16. 按摩师
题目一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。输入: [2,7,9,3,1]输出: 12解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。原创 2022-01-08 20:46:03 · 198 阅读 · 0 评论 -
力扣 面试题 08.09. 括号
题目括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bracket-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:回溯Java实现class Solution原创 2022-01-08 15:26:18 · 116 阅读 · 0 评论 -
力扣 面试题 04.10. 检查子树
题目检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。注意:此题相对书上原题略有改动。示例输入:t1 = [1, 2, 3], t2 = [2]输出:true输入:t1 = [1, null, 2, 4], t2 = [3, 2]输出:false来源:力扣(LeetCode原创 2022-01-05 12:48:21 · 66 阅读 · 0 评论 -
力扣 面试题 02.05. 链表求和
题目给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912进阶:思考一下,假设这些数位是正向存放的,又该如何解决呢?输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295输出:9 -&g原创 2022-01-04 13:54:02 · 244 阅读 · 0 评论 -
力扣 面试题 04.08. 首个共同祖先
题目设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]3/ 5 1/ \ / 6 2 0 8/ 7 4示例输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1 的最近公共祖先是节点 3。输入: root原创 2022-01-04 13:01:20 · 131 阅读 · 0 评论 -
力扣 面试题 08.01. 三步问题
题目三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例输入:n = 3输出:4说明: 有四种走法输入:n = 5输出:13来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/three-steps-problem-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法1:动态规划注意溢原创 2021-12-30 16:52:29 · 101 阅读 · 0 评论