写在前面 2021年还是互联网元年,当时常规的华为Offer还是普遍人的备选,如今的迪爹(BYD)也还是"来投就给Offer"的迪子。 只有字节,当时是公认炙手可热的"宇宙厂"。 作为在2021就提前体验了这两年计算机的"供过于求"的字节,自然在算法题上的难度要超出其他大厂招聘的一档。 那么这道「中国互联网鼎盛时期中的鼎盛大厂」的算法笔题,现在的你能做出来吗? 题目描述 这是LeetCode上的1268.搜索推荐系统,难度为中等。 Tag:「排序」、「字典树」、「哈希表」、「二分」 给你一个产品数组 products 和一个字符串 searchWord,prod...

题目描述 这是LeetCode上的2661.找出叠涂元素,难度为中等。 Tag:「模拟」、「哈希表」、「计数」 给你一个下标从开始的整数数组arr和一个的整数矩阵mat。 arr和mat都包含范围 从下标开始遍历arr中的每个下标i,并将包含整数arr[i]的mat单元格涂色。 请你找出arr中在mat的某一行或某一列上都被涂色且下标最小的元素,并返回其下标 示例1: 输入:arr=[1,3,4,2],mat=[[1,4],[2,3]] 输出:2 解释:遍历如上图所示,arr[2]在矩阵中的第一行或第二列上都被涂色。 示例2: imageexplanationforexample...

题目描述 这是LeetCode上的1457.二叉树中的伪回文路径,难度为中等。 Tag:「DFS」、「位运算」 给你一棵二叉树,每个节点的值为1到9。 我们称二叉树中的一条路径是「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中伪回文路径的数目。 示例1: 输入:root=[2,3,1,3,1,null,1] 输出:2 解释:上图为给定的二叉树。总共有3条从根到叶子的路径:红色路径[2,3,3],绿色路径[2,1,1]和路径[2,3,1]。 在这些路径中,只有红色和绿色的路径是伪回文路径,因为红色路径[2,3,3]存在回文排列[...

题目描述 这是LeetCode上的2336.无限集中的最小数字,难度为中等。 Tag:「优先队列(堆)」、「哈希表」 现有一个包含所有正整数的集合 实现SmallestInfiniteSet类: SmallestInfiniteSet()初始化SmallestInfiniteSet对象以包含所有正整数。 intpopSmallest()移除并返回该无限集中的最小整数。 voidaddBack(intnum)如果正整数num不存在于无限集中,则将一个num添加到该无限集中。 示例: 输入 ["SmallestInfiniteSet","addBack","popSmallest","pop...

题目描述 这是LeetCode上的53.最大子数组和,难度为中等。 Tag:「前缀和」、「区间求和问题」、「线性DP」、「分治」 给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例1: 输入:nums=[-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组[4,-1,2,1]的和最大,为6。 示例2: 输入:nums=[1] 输出:1 示例3: 输入:nums=[5,4,-1,7,8] 输出:23 提示: 进阶:如果你已经实现复杂度为 前缀和or线性DP 当...

题目描述 这是LeetCode上的2304.网格中的最小路径代价,难度为中等。 Tag:「最短路」、「图」、「模拟」、「序列DP」、「动态规划」 给你一个下标从0开始的整数矩阵grid,矩阵大小为mxn,由从0到 你可以在此矩阵中,从一个单元格移动到下一行的任何其他单元格。 如果你位于单元格,且满足,你可以移动到,,..., 每次可能的移动都需要付出对应的代价,代价用一个下标从0开始的二维数组moveCost表示,该数组大小为,其中moveCost[i][j]是从值为i的单元格移动到下一行第j列单元格的代价。从grid最后一行的单元格移动的代价可以忽略。 grid一条路径的代价是:所有路径经过...

题目描述 这是LeetCode上的2824.统计和小于目标的下标对数目,难度为简单。 Tag:「排序」、「二分」、「双指针」 给你一个下标从0开始长度为n的整数数组nums和一个整数target,请你返回满足0<=i<j<n且nums[i]+nums[j]<target的下标对 示例1: 输入:nums=[-1,1,2,3,1],target=2 输出:3 解释:总共有3个下标对满足题目描述: (0,1),0<1且nums[0]+nums[1]=0<target (0,2),0<2且nums[0]+nums[2]=1<target (0,4...

题目描述 这是LeetCode上的2342.数位和相等数对的最大和,难度为简单。 Tag:「模拟」、「哈希表」 给你一个下标从0开始的数组nums,数组中的元素都是正整数。 请你选出两个下标i和j(i!=j),且nums[i]的数位和与nums[j]的数位和相等。 请你找出所有满足条件的下标i和j,找出并返回nums[i]+nums[j]可以得到的最大值。 示例1: 输入:nums=[18,43,36,13,7] 输出:54 解释:满足条件的数对(i,j)为: (0,2),两个数字的数位和都是9,相加得到18+36=54。 (1,4),两个数字的数位和都是7,相加得到43+7=50。 所...

这是LeetCode上的2736.最大和查询,难度为困难。 Tag:「排序」、「离散化」、「树状数组」 给你两个长度为n、下标从0开始的整数数组nums1和nums2,另给你一个下标从1开始的二维数组queries,其中 对于第i个查询,在所有满足且的下标j()中,找出的最大值,如果不存在满足条件的j则返回。 返回数组answer,其中answer[i]是第i个查询的答案。 示例1: 输入:nums1=[4,3,1,2],nums2=[2,4,9,5],queries=[[4,1],[1,3],[2,5]] 输出:[6,10,7] 解释: 对于第1个查询:xi=4且yi=1,可以选择下...

题目描述 这是LeetCode上的99.恢复二叉搜索树,难度为中等。 Tag:「二叉树」、「树的搜索」、「递归」、「迭代」、「中序遍历」、「Morris遍历」 给你二叉搜索树的根节点root,该树中的恰好两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。 示例1: 输入:root=[1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3不能是1的左孩子,因为3>1。交换1和3使二叉搜索树有效。 示例2: 输入:root=[3,1,4,null,null,2] 输出:[2,1,4,null,null,3] 解释:2不能在3的右子...

题目描述 这是LeetCode上的96.不同的二叉搜索树,难度为中等。 Tag:「树」、「二叉搜索树」、「动态规划」、「区间DP」、「数学」、「卡特兰数」 给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种? 返回满足题意的二叉搜索树的种数。 示例1: 输入:n=3 输出:5 示例2: 输入:n=1 输出:1 提示: 区间DP 沿用95.不同的二叉搜索树II的基本思路,只不过本题不是求具体方案,而是求个数。 除了能用95.不同的二叉搜索树II提到的「卡特兰数」直接求解 求数量使用DP,求所有具体方案使用爆搜,是极其常见的一题多问搭配。 定义为...

题目描述 这是LeetCode上的834.树中距离之和,难度为困难。 Tag:「树形DP」、「DFS」、「动态规划」、「树」 给定一个无向、连通的树。 树中有n个标记为0...n-1的节点以及n-1条边。 给定整数n和数组edges,表示树中的节点和 返回长度为n的数组answer,其中answer[i]是树中第i个节点与所有其他节点之间的距离之和。 示例1: 输入:n=6,edges=[[0,1],[0,2],[2,3],[2,4],[2,5]] 输出:[8,12,6,10,10,10] 解释:树如图所示。 我们可以计算出dist(0,1)+dist(0,2)+dist(0,3)+d...

题目描述 这是LeetCode上的81.搜索旋转排序数组II,难度为中等。 Tag:「二分」 已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。 在传递给函数之前,nums在预先未知的某个下标k()上进行了旋转,使数组变为(下标从 例如,[0,1,2,4,4,4,5,6,6,7]在下标5处经旋转后可能变为[4,5,6,6,7,0,1,2,4,4]。 给你旋转后的数组nums和一个整数target,请你编写一个函数来判断给定的目标值是否存在于数组中。 如果nums中存在这个目标值target,则返回true,否则返回false。 示例 1: 输入:nums=[2,5...

题目描述 这是LeetCode上的2698.求一个整数的惩罚数,难度为中等。 Tag:「递归」、「模拟」、「打表」 给你一个正整数,请你返回 的惩罚数定义为所有满足以下条件 的十进制表示的字符串可以分割成若干连续子字符串,且这些子字符串对应的整数值之和等于 示例1: 输入:n=10 输出:182 解释:总共有3个整数i满足要求: 1,因为11=1 9,因为99=81,且81可以分割成8+1。 10,因为1010=100,且100可以分割成10+0。 因此,10的惩罚数为1+81+100=182 示例2: 输入:n=37 输出:1478 解释:总共有4个整数i满足要求: 1,...

题目描述 这是LeetCode上的2127.参加会议的最多员工数,难度为困难。 Tag:「拓扑排序」、「内向基环树」、「图」 一个公司准备组织一场会议,邀请名单上有n位员工。 公司准备了一张圆形的桌子,可以坐下任意数目的员工。 员工编号为到。每位员工都有一位喜欢的员工,每位员工当且仅当他被安排在喜欢员工的旁边,他才会参加会议,每位员工喜欢的员工不会是他自己。 给你一个下标从开始的整数数组favorite,其中表示第 示例1: 输入:favorite=[2,2,1,2] 输出:3 解释: 上图展示了公司邀请员工0,1和2参加会议以及他们在圆桌上的座位。 没办法邀请所有员工参与会议,因为员...

题目描述 这是LeetCode上的117.填充每个节点的下一个右侧节点指针II,难度为中等。 Tag:「BFS」、「链表」 给定一个二叉树: structNode{ intval; Nodeleft; Noderight; Nodenext; } 填充它的每个next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将next指针设置为NULL。 初始状态下,所有next指针都被设置为NULL。 示例1: 输入:root=[1,2,3,4,5,null,7] 输出:[1,,2,3,,4,5,7,] 解释:给定二叉树如图A所示,你的函数应该填充它的每个next指针,以...

题目描述 这是LeetCode上的2003.每棵子树内缺失的最小基因值,难度为困难。 Tag:「DFS」、「树」、「图」、「脑筋急转弯」 有一棵根节点为0的家族树,总共包含n个节点,节点编号为0到n1。 给你一个下标从0开始的整数数组parents,其中是节点i的父节点。由于节点0是根,所以。 总共有个基因值,每个基因值都用闭区间 给你一个下标从0开始的整数数组nums,其中是节点i的基因值,且基因值互不相同。 请你返回一个数组ans,长度为n,其中是以节点i为根的子树内缺失的最小基因值。 节点x为根的子树包含节点x和它所有的后代节点。 示例1: 输入:parents=[-1,0,0,2]...

题目描述 这是LeetCode上的2300.咒语和药水的成功对数,难度为中等。 Tag:「排序」、「二分」 给你两个正整数数组spells和potions,长度分别为n和m,其中spells[i]表示第i个咒语的能量强度,potions[j]表示第j瓶药水的能量强度。 同时给你一个整数success。一个咒语和药水的能量强度相乘如果大于等于success,那么它们视为一对成功的组合。 请你返回一个长度为n的整数数组pairs,其中pairs[i]是能跟第i个咒语成功组合的药水数目。 示例1: 输入:spells=[5,1,3],potions=[1,2,3,4,5],success=7 输...

题目描述 这是LeetCode上的1879.两个数组最小的异或值之和,难度为困难。 Tag:「状压DP」、「动态规划」、「启发式搜索」 给你两个整数数组nums1和nums2,它们长度都为n。 两个数组的异或值之和为(nums1[0]XORnums2[0])+(nums1[1]XORnums2[1])+...+(nums1[n1]XORnums2[n1])(下标从0开始)。 比方说,[1,2,3]和[3,2,1]的异或值之和等于(1XOR3)+(2XOR2)+(3XOR1)=2+0+2=4。 请你将nums2中的元素重新排列,使得异或值之和最小。 请你返回重新排列之后的异或值之和。 示例1: ...

题目描述 这是LeetCode上的331.验证二叉树的前序序列化,难度为中等。 Tag:「二叉树」 序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如。 _9_ /\ 32 /\/\ 416 /\/\/\ 例如,上面的二叉树可以被序列化为字符串"9,3,4,,,1,,,2,,6,,",其中代表一个空节点。 给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。 每个以逗号分隔的字符或为一个整数或为一个表示null指针的''。 你可以认为输入格式总是...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~