自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端小厂面试题:字符删除+购买通行证+数组划分+寻找峰值

广州某小厂面试题笔者在2021.10.28,投递简历到广州小厂,岗位是 web前端实习,HR看过简历后,上来就是题库链接,让我先做题。试题:领扣的三道中等题,一道简答题字符串删除描述给出两个字符串 str 和 sub,你的任务是在 str 中完全删除那些在 sub 中存在的字符。字符串中包含空格1≤len(str),len(sub)≤10^5样例样例 1:输入:str="They are students",sub="aeiou"输出:"Thy r stdnts"题解ex

2021-10-30 19:48:40 716 3

原创 第三十八题 581. 最短无序连续子数组

581. 最短无序连续子数组题目描述给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例 1输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9]进行升序排序,那么整个表都会变为升序排序。示例 2输入:nums = [1,2,3,4]输出:0示例 3输入:nums = [1]输出:0提示

2021-09-23 17:32:04 105

原创 第三十七题 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-09-23 16:49:02 113

原创 第三十六题 69. x 的平方根

69. x 的平方根题目描述给你一个非负整数 x ,计算并返回 x 的 平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1输入:x = 4输出:2示例 2输入:x = 8输出:2解释:8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。提示0 <= x <= 231 - 1思路二分查找缩小范围查找把

2021-09-17 21:36:35 110

原创 第三十五题 35. 搜索插入位置

35. 搜索插入位置题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1输入: nums = [1,3,5,6], target = 5输出: 2示例 2输入: nums = [1,3,5,6], target = 2输出: 1示例 3输入: nums = [1,3,5,6], target = 7输出: 4示例 4输入: nums

2021-09-16 22:50:18 92

原创 第三十四题 47. 全排列 II

47. 全排列 II题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1输入:nums = [1,1,2]输出: [[1,1,2], [1,2,1], [2,1,1]]示例 2输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示1 <= nums.length <= 8-10 <= nums[i] <= 10思路

2021-09-12 22:32:21 50

原创 第三十三题 46. 全排列

46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3输入:nums = [1]输出:[[1]]提示1 <= nums.length <= 6-10 <= nums[i]

2021-09-11 22:58:34 93

原创 第三十二题 491. 递增子序列

491. 递增子序列题目描述给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]示例 2输入:nums = [4,4,3,2,1]输出:[[4,4]]提示

2021-09-11 08:56:49 208

原创 第三十一题 90. 子集 II

90. 子集 II题目描述给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2输入:nums = [0]输出:[[],[0]]提示1 <= nums.length <= 1010 <= nums[i] <= 10思路DF

2021-09-09 22:19:22 83

原创 第三十题 78. 子集

78. 子集题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2输入:nums = [0]输出:[[],[0]]提示1 <= nums.length <= 1010 <= nums[i] <= 10nums

2021-09-08 22:35:08 111

原创 第二十九题 93. 复原 IP 地址

93. 复原 IP 地址题目描述给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。示例 1

2021-09-07 22:16:00 154

原创 第二十八题 40. 组合总和 II

40. 组合总和 II题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1输入: candidates = [10,1,2,7,6,1,5], target = 8,输出: [ [1,1,6], [1,2,5],[1,7], [2,6] ]示例 2输入: candidates = [2,5,2,

2021-09-06 22:45:02 50

原创 第二十七题 131. 分割回文串

131. 分割回文串题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]示例 2输入:s = “a”输出:[[“a”]]提示1 <= s.length <= 16s 仅由小写英文字母组成思路回溯代码/** * @param {string} s * @retur

2021-09-06 22:40:51 62

原创 第二十六题 39. 组合总和

39. 组合总和题目描述给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例1输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例2输入

2021-09-03 01:01:54 152

原创 第二十五题 17. 电话号码的字母组合

17. 电话号码的字母组合题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例1输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例2输入:digits = “”输出:[]示例3输入:digits = “2”输出:[“a”,“b”,“c”]提示0 <= d

2021-09-01 22:52:32 62

原创 第二十四题 216. 组合总和 III

216. 组合总和 III题目描述找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明所有数字都是正整数。解集不能包含重复的组合。示例 1输入: k = 3, n = 7输出: [[1,2,4]]示例 2输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]思路回溯定义 temp 数组存放组合 count计算组合元素总和终止条件: 数组 temp 的长度为 k

2021-08-31 22:21:02 77

原创 第二十三题 77. 组合

77. 组合题目描述给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例1输入:n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2输入:n = 1, k = 1输出:[[1]]提示1 <= n <= 201 <= k <= n思路回溯暴力结题定义 temp数组临时存放选出来的数只要 temp的长度 等

2021-08-31 01:10:36 83

原创 第二十二题 455. 分发饼干

455. 分发饼干题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例1输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,

2021-08-29 21:24:59 52

原创 第二十一题 543. 二叉树的直径

543. 二叉树的直径题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例给定二叉树返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意两结点之间的路径长度是以它们之间边的数目表示。思路递归 进行 dfs/** * Definition for a binary tree node. * function TreeNode(val, left, right) { *

2021-08-29 00:58:32 100

原创 第二十题 94. 二叉树的中序遍历

94. 二叉树的中序遍历题目描述给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例1:输入:root = [1,null,2,3]输出:[1,3,2]示例2输入:root = []输出:[]示例3输入:root = [1]输出:[1]示例4输入:root = [1,2]输出:[2,1]示例 5输入:root = [1,null,2]输出:[1,2]提示树中节点数目在范围 [0, 100] 内-100 <= Node.val

2021-08-27 23:52:01 113

原创 第十九题 剑指 Offer 68 - II. 二叉树的最近公共祖先

剑指 Offer 68 - II. 二叉树的最近公共祖先题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例1:输入: root = [3,5,1,6,2,0,8,null,null,7,4],

2021-08-26 18:19:59 48

原创 第十八题 剑指 Offer 26. 树的子结构

剑指 Offer 26. 树的子结构题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:示例1输入:A = [1,2,3], B = [3,1]输出:false示例2输入:A = [3,4,5,1,2], B = [4,1]输出:true限制0 <= 节点个数 <= 10000思路DFS判别传入的参数中 B树中的节点是否为空 为空则返回

2021-08-26 00:54:41 48

原创 第十七题 剑指 Offer 34. 二叉树中和为某一值的路径

剑指 Offer 34. 二叉树中和为某一值的路径题目描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例给定如下二叉树,以及目标和 target = 22,返回:提示节点总数 <= 10000思路注意这里的路径是指:一直从根节点一直走到最后的节点(该节点没有子节点)举个例子:以上面的树为例 target的值为26时 路径为 [[5,8,13]] 但target 为 17时 明明可以走:5-

2021-08-25 00:36:17 41

原创 第十六题 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例1:输入: root = [6,2,8,0,4,7,9,null,null,

2021-08-24 00:39:20 46

原创 第十五题 剑指 Offer 55 - II. 平衡二叉树

剑指 Offer 55 - II. 平衡二叉树题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例1给定二叉树 [3,9,20,null,null,15,7]返回true示例2给定二叉树 [1,2,2,3,3,null,null,4,4]返回false限制0 <= 树的结点个数 <= 10000思路用递归进行搜索定义两个变量用于记录 左右子树的深度 左:lDep

2021-08-22 20:53:19 63

原创 十四题 剑指 Offer 54. 二叉搜索树的第k大节点

剑指 Offer 54. 二叉搜索树的第k大节点题目描述给定一棵二叉搜索树,请找出其中第k大的节点。示例1:实例2限制1 ≤ k ≤ 二叉搜索树元素个数思路DFS右-中-左遍历二叉树节点的右子树比左子树大应该从二叉树的右子树开始搜索,直至没右节点为止通过递归 先找到右子树的最深层的右节点从右子树的最深层的右节点 通过k自减往回寻找代码/** * Definition for a binary tree node. * function TreeNode(val) {

2021-08-21 20:10:48 36

原创 十三题 剑指 Offer 13. 机器人的运动范围

剑指 Offer 13. 机器人的运动范围题目描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例1:输入:m = 2, n = 3, k

2021-08-21 17:28:12 45

原创 第十二题 剑指 Offer 32 - I. 从上到下打印二叉树

剑指 Offer 32 - I. 从上到下打印二叉树题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],返回:提示:节点总数 <= 1000思路今天连续开三个会讨论比赛,比较忙所以挑一题简单的BFS来做,每天打卡不能掉线,太累了 ,今天先水一题,巩固一下BFS的用法。BFS通过模拟队列进行搜索/** * Definition for a binary tree node. *

2021-08-19 23:57:40 105 1

原创 第十一 剑指 Offer 27. 二叉树的镜像

剑指 Offer 27. 二叉树的镜像题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000思路用一个模拟队列访问到树的每一节点自定义一个交换函数 swap let swap = function(node){ [node.left, node.right] = [node

2021-08-18 20:47:39 42

原创 第十题 剑指 Offer 28. 对称的二叉树

剑指 Offer 28. 对称的二叉树题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false限制0 <= 节点个数 <=

2021-08-17 23:09:57 42

原创 第九题 剑指 Offer 32 - II. 从上到下打印二叉树 II

剑指 Offer 32 - II. 从上到下打印二叉树 II题目描述从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[ [3], [9,20], [15,7] ]提示节点总数 <= 1000思路BFSqueue数组: 模拟队列res数组:存放结果temp数组:存放每一层的节点数据root的根结点入队遍历队列 将队列的元素逐一出队

2021-08-16 23:53:48 96 1

原创 第八题 剑指 Offer 55 - I. 二叉树的深度

剑指 Offer 55 - I. 二叉树的深度题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。提示节点总数 <= 10000思路这周开始的话主要是学BFS,用DFS解题更快,更简单,且易理解,但这题还是使用BFS方法进行解题BFS根据二叉树定义数据结构:let root = { val:

2021-08-16 21:41:46 50

原创 NestJS Error: Cannot find module ‘@nestjs/core/router/route-path-factory‘

Error: Cannot find module ‘@nestjs/core/router/route-path-factory’原因nest 版本过低解决方法将nest 升级至最新版本nest update -f -t latest

2021-08-16 18:28:45 2065

原创 第7题 33. 搜索旋转排序数组

33. 搜索旋转排序数组题目描述整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后

2021-08-16 00:42:04 91

原创 第六题 34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例1输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]提示0 <= nums.length <

2021-08-15 01:13:56 71

原创 第五题 287.寻找重复数

287. 寻找重复数题目描述给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。示例1输入:nums = [1,3,4,2,2]输出:2示例2输入:nums = [3,1,3,4,2]输出:3示例3输入:nums = [1,1]输出:1示例4输入:n

2021-08-14 17:54:03 39

原创 第四题 剑指offer53- II. 0~n-1中缺失的数字

剑指 Offer 53 - II. 0~n-1中缺失的数字题目描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例1输入: [0,1,3]输出: 2示例2输入: [0,1,2,3,4,5,6,7,9]输出: 8限制1 <= 数组长度 <= 10000思路误区直接二分法查找,找出: 数组元素!===元素索引值 直接返回开始时理解错了,过了

2021-08-13 18:57:28 73

原创 第三题 剑指offer 53 在排序数组中查找数字

剑指 Offer 53 - I. 在排序数组中查找数字 I题目描述统计一个数字在排序数组中出现的次数示例1输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示0 <= nums.length <= 10^5-10^9 <= nums[i] <= 10 ^9.nums 是一个非递减数组-10^ 9 <= target &

2021-08-13 18:34:53 45

原创 第二题 剑指offer57

剑指offer 57. 和为s的两个数字题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:1 <= nums.length <= 10^

2021-08-10 17:55:32 80

原创 第一题 剑指offer 17

打印从1到最大的n位数题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例1输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数思路第一天刷题,主要想跟着小队一起,从养成刷题习惯开始,选择一题简单的hello world级别的题目作为开胃菜,增强自己刷题的兴趣,刷题顺序的是按照剑指offer的电子书的内容出现的问题顺序的。思路一:暴力解法

2021-08-09 21:21:08 68

空空如也

空空如也

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

TA关注的人

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