详解算法题
文章平均质量分 54
爱敲代码的罗根
勿忘曾许之愿,此句,与诸君共勉
展开
-
「优选算法刷题」:字符串相乘
给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。不能使用任何内置的 BigInteger 库或直接将输入转换为整数。原创 2024-03-04 22:43:37 · 957 阅读 · 0 评论 -
「优选算法刷题」:在每个树行中找最大值
给定一棵二叉树的根节点root,请找出该二叉树中每一层的最大值。原创 2024-03-04 10:57:04 · 608 阅读 · 0 评论 -
「优选算法刷题」:最长回文子串
给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。"bab""aba" 同样是符合题意的答案。原创 2024-03-03 23:55:10 · 502 阅读 · 0 评论 -
「优选算法刷题」:比较含退格的字符串
给定s和t两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回true。代表退格字符。如果对空文本输入退格字符,文本继续为空。trues 和 t 都会变成 "ac"。trues 和 t 都会变成 ""。falses 会变成 "c",但 t 仍然是 "b"。t'#'原创 2024-03-03 23:43:08 · 423 阅读 · 0 评论 -
「优选算法刷题」:数据流中的第K大元素
设计一个找到数据流中第k大元素的类(class)。注意是排序后的第k大元素,不是第k个不同的元素。请实现KthLargestknumsvalnumskadd104kk。原创 2024-03-02 09:51:13 · 468 阅读 · 0 评论 -
「优选算法刷题」:最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x原创 2024-03-02 09:16:02 · 572 阅读 · 0 评论 -
「优选算法刷题」:验证栈序列
给定pushed和popped两个序列,每个序列中的,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回true;否则,返回false。true我们可以按以下顺序执行:false1 不能在 2 之前弹出。pushed。原创 2024-03-01 20:44:05 · 441 阅读 · 0 评论 -
「优选算法刷题」:两数相加
给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2024-03-01 16:26:34 · 428 阅读 · 0 评论 -
「优选算法刷题」:二进制求和
给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。原创 2024-02-29 16:55:42 · 585 阅读 · 0 评论 -
「优选算法刷题」:删除字符串中的所有相邻重复项
给出由小写字母组成的字符串S会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。"abbaca""ca"例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。原创 2024-02-29 14:22:15 · 628 阅读 · 0 评论 -
「优选算法刷题」:最长公共前缀(两种解法)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。"fl"""输入不存在公共前缀。原创 2024-02-27 16:49:04 · 501 阅读 · 0 评论 -
「优选算法刷题」:矩阵区域和
给你一个m x n的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个是所有满足下述条件的元素mat[r][c]的和:(r, c)原创 2024-02-27 11:18:37 · 1542 阅读 · 0 评论 -
「优选算法刷题」:判定是否互为字符重排
给定两个由小写字母组成的字符串s1和s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。truefalse。原创 2024-02-26 17:46:38 · 555 阅读 · 0 评论 -
「优选算法刷题」:字母异位词分组
给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的所有字母得到的一个新单词。原创 2024-02-26 16:57:07 · 730 阅读 · 0 评论 -
「优选算法刷题」:存在重复元素Ⅱ
给你一个整数数组nums和一个整数k,判断数组中是否存在两个i和j,满足且。如果存在,返回true;否则,返回false。原创 2024-02-25 11:10:47 · 565 阅读 · 0 评论 -
「优选算法刷题」:存在重复元素
给你一个整数数组nums。如果任一值在数组中出现,返回true;如果数组中每个元素互不相同,返回false。原创 2024-02-25 10:51:12 · 408 阅读 · 1 评论 -
「优选算法刷题」:斐波那契数(两种解法)
(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。原创 2024-02-24 17:03:39 · 417 阅读 · 0 评论 -
「优选算法刷题」:两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。[1,2][0,1]原创 2024-02-24 12:27:08 · 403 阅读 · 1 评论 -
「递归算法」:求根节点到叶节点数字之和
给你一个二叉树的根节点root,树中每个节点都存放有一个0到9之间的数字。123计算从根节点到叶节点生成的。是指没有子节点的节点。25从根到叶子节点路径 1->2代表数字 12从根到叶子节点路径 1->3代表数字 13因此,数字总和 = 12 + 13 = 251026从根到叶子节点路径 4->9->5代表数字 495从根到叶子节点路径 4->9->1代表数字 491从根到叶子节点路径 4->0代表数字 40。原创 2024-02-23 19:00:40 · 386 阅读 · 0 评论 -
「快速排序」:颜色分类
给定一个包含红色、白色和蓝色、共n个元素的数组nums原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数01和2分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。[0,1,2]012。原创 2024-02-23 12:44:24 · 406 阅读 · 0 评论 -
「递归算法」:括号生成
数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且括号组合。原创 2024-02-22 18:57:52 · 432 阅读 · 0 评论 -
「递归算法」:目标和(两种解法)
给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个2'+'1'-'"+2-1"返回可以通过上述方法构造的、运算结果等于target的不同的数目。5一共有 5 种方法让最终目标和为 3。1。原创 2024-02-22 13:51:31 · 400 阅读 · 0 评论 -
「递归算法」:字母大小写全排列
给定一个字符串s,通过将字符串s中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。以返回输出。原创 2024-02-21 18:20:33 · 539 阅读 · 0 评论 -
「递归算法」:组合
给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。原创 2024-02-21 11:58:16 · 495 阅读 · 0 评论 -
「递归算法」:优美的排列
假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组perm),只要满足下述条件,该数组就是一个perm[i]iiperm[i]给你一个整数n,返回可以构造的的。n = 22第 1 个优美的排列是 [1,2]:- perm[1] = 1 能被 i = 1 整除- perm[2] = 2 能被 i = 2 整除第 2 个优美的排列是 [2,1]:- perm[1] = 2 能被 i = 1 整除- i = 2 能被 perm[2] = 1 整除n = 11。原创 2024-02-19 20:04:28 · 692 阅读 · 0 评论 -
「优选算法刷题」:连续数组
给定一个二进制数组nums, 找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。2[0, 1] 是具有相同数量 0 和 1 的最长连续子数组。2[0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。01。原创 2024-02-19 19:01:37 · 1668 阅读 · 0 评论 -
「优选算法刷题」:寻找数组的中心下标
给你一个整数数组nums,请计算数组的。数组是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为0,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回的那一个。如果数组不存在中心下标,返回-1。3中心下标是 3。左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,原创 2024-02-18 16:46:20 · 360 阅读 · 0 评论 -
「优选算法刷题」:x的平方根
给你一个非负整数x,计算并返回x的。由于返回类型是整数,结果只保留,小数部分将被不允许使用任何内置指数函数和算符,例如或者x ** 0.5。x = 42x = 828 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。原创 2024-02-18 13:08:44 · 471 阅读 · 0 评论 -
「优选算法刷题」:判定字符是否唯一
实现一个算法,确定一个字符串s的所有字符是否全都不同。原创 2024-02-17 21:37:43 · 472 阅读 · 0 评论 -
「递归算法」:找出所有子集的异或总和再求和
一个数组的定义为数组中所有元素按位XOR的结果;如果数组为,则异或总和为0。[2,5,6]给你一个数组nums,请你求出nums中每个的,计算并返回这些值相加之。在本题中,元素的不同子集应计数。数组a是数组b的一个的前提条件是:从b删除几个(也可能不删除)元素能够得到a。6[1,3] 共有 4 个子集:- 空子集的异或总和是 0。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [1,3] 的异或总和为 1 XOR 3 = 2。原创 2024-02-17 15:54:11 · 604 阅读 · 0 评论 -
「递归算法」:两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-02-16 15:30:31 · 536 阅读 · 0 评论 -
「优选算法刷题」:寻找旋转排序数组中的最小值
已知一个长度为n的数组,预先按照升序排列,经由1到n次后,得到输入数组。例如,原数组47注意,数组的结果为数组。给你一个元素值的数组nums,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。1原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。0原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。11原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原创 2024-02-16 12:11:26 · 406 阅读 · 0 评论 -
「优选算法刷题」:替换所有的问号
给你一个仅包含小写英文字母和字符的字符串s,请你将所有的转换为若干小写字母,使最终的字符串不包含任何的字符。注意:你修改非字符。题目测试用例保证字符,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。s = "?zs""azs"该示例共有 25 种解决方案,从 "azs" 到 "yzs" 都是符合题目要求的。只有 "z" 是无效的修改,因为字符串 "zzs" 中有连续重复的两个 'z'。原创 2024-02-15 22:59:14 · 515 阅读 · 0 评论 -
「优选算法刷题」:和可被K整除的子数组
给定一个整数数组nums和一个整数k,返回其中元素之和可被k整除的(连续、非空)的数目。是数组的部分。7有 7 个子数组满足其元素之和可被 k = 5 整除:0。原创 2024-02-15 20:18:14 · 789 阅读 · 0 评论 -
【模板】前缀和
前缀和,顾名思义,就是某一个数组的前n项的总和。设我们有一个数组arr,其前缀和数组记为Sum,那么Sum[i]就表示从arr[0]加到arr[i]的总和。例如,假设有一个数组,对应的前缀和数组就是。其中,,以此类推。原创 2024-02-14 17:41:26 · 896 阅读 · 0 评论 -
「优选算法刷题」:除自身以外数组的乘积
给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O( n)时间复杂度内完成此题。nums。原创 2024-02-14 17:17:05 · 640 阅读 · 0 评论 -
「优选算法刷题」:搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。214。原创 2024-02-12 21:48:39 · 549 阅读 · 0 评论 -
「优选算法」:山脉数组的峰顶索引
符合下列属性的数组arr称为i给你由整数组成的山脉数组arr,返回满足的下标i。你必须设计并实现时间复杂度为O(log(n))的解决方案。111。原创 2024-02-12 11:10:55 · 593 阅读 · 0 评论 -
「优选算法刷题」:在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。原创 2024-02-11 21:55:53 · 577 阅读 · 0 评论 -
「递归算法」:反转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。原创 2024-02-11 12:18:59 · 392 阅读 · 0 评论