自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wang的专栏

Name: wangqiangqiang | Email : johnnynode@gmail.com | Github : github.com/johnnynode

  • 博客(1357)
  • 收藏
  • 关注

原创 数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。返回满足此条件的 任一数组 作为答案。2 ) 方案2: 双指针 + 一次遍历。1 ) 方案1: 两次遍历。3 ) 方案3: 原地交换。

2025-02-12 22:45:00 263

原创 数据结构与算法之集合: LeetCode 350. 两个数组的交集 II (Ts版)

1 ) 方案1:哈希表。2 )方案2: 排序 + 双指针。

2025-02-11 22:00:00 172

原创 数据结构与算法之数组: LeetCode 541. 反转字符串 II (Ts版)

1 ) 方案1:双指针

2025-02-11 18:30:00 465

原创 数据结构与算法之栈: LeetCode 2454. 下一个更大元素 IV (Ts版)

请你返回一个整数数组 answer ,其中 answer[i]是 nums[i] 的第二大整数。下标为 0 处:2 的右边,4 是大于 2 的第一个整数,9 是第二个大于 2 的整数。下标为 1 处:4 的右边,9 是大于 4 的第一个整数,6 是第二个大于 4 的整数。下标为 2 处:0 的右边,9 是大于 0 的第一个整数,6 是第二个大于 0 的整数。下标为 3 处:右边不存在大于 9 的整数,所以第二大整数为 -1。下标为 4 处:右边不存在大于 6 的整数,所以第二大整数为 -1。

2025-02-05 10:45:00 555

原创 数据结构与算法之栈: LeetCode 556. 下一个更大元素 III (Ts版)

给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n。如果不存在这样的正整数,则返回 -1。注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1。1 ) 方案1:下一个排列。2 ) 方案2:数学。

2025-02-05 06:45:00 507

原创 数据结构与算法之栈: LeetCode 03.05. 栈排序 (Ts版)

1 ) 方案1:栈和辅助栈。2 )方案2:基于 栈排序。

2025-02-05 03:00:00 295

原创 数据结构与算法之二叉树: LeetCode 116. 填充每个节点的下一个右侧节点指针 (Ts版)

解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,‘#’ 标志着每一层的结束。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。初始状态下,所有 next 指针都被设置为 NULL。2 ) 方案2:使用已建立的 next 指针。

2025-02-03 10:00:00 349 1

原创 数据结构与算法之字符串: LeetCode 117. 填充每个节点的下一个右侧节点指针 II (Ts版)

解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),‘#’ 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。2 ) 方案2:使用已建立的 next 指针。1 ) 方案1:层次遍历。

2025-02-03 09:45:00 294

原创 数据结构与算法之异步: LeetCode 1114. 按序打印 (Ts版)

输入 [1,2,3] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 second() 方法,线程 C 将会调用 third() 方法。输入 [1,3,2] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 third() 方法,线程 C 将会调用 second() 方法。请设计修改程序,以确保 second() 方法在 first() 方法之后被执行,third() 方法在 second() 方法之后被执行。三个不同的线程 A、B、C 将会共用一个 Foo 实例。

2025-02-03 09:15:00 365

原创 数据结构与算法之栈: LeetCode 3100. 换水问题 II (Ts版)

注意,你不能使用相同的 numExchange 值交换多批空水瓶。例如,如果 numBottles == 3 并且 numExchange == 1 ,则不能用 3 个空水瓶交换成 3 个满水瓶。解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。numBottles 代表你最初拥有的满水瓶数量。给你两个整数 numBottles 和 numExchange。

2025-02-03 08:30:00 381

原创 数据结构与算法之贪心: LeetCode 1518. 换水问题 (Ts版)

超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到多少瓶水。所以最多能喝到 15 + 3 + 1 = 19 瓶水。所以最多能喝到 9 + 3 + 1 = 13 瓶水。如果喝掉了水瓶中的水,那么水瓶就会变成空的。解释:你可以用 3 个空瓶兑换 1 瓶水。解释:你可以用 4 个空瓶兑换 1 瓶水。1 ) 方案1:模拟。2 ) 方案2:数学。

2025-02-03 06:15:00 404

原创 数据结构与算法之栈: LeetCode 641. 设计循环双端队列 (Ts版)

1 ) 方案1:数组。2 ) 方案2:链表。

2025-02-03 00:00:00 505

原创 数据结构与算法之矩阵: LeetCode 1329. 将矩阵按对角线排序 (Ts版)

矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2]给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。2 ) 方案2:优化版。1 ) 方案1:模拟。

2025-02-02 13:00:00 267

原创 数据结构与算法之动态规划: LeetCode 1494. 并行课程 II (Ts版)

给你一个整数 n 表示某所大学里课程的数目,编号为 1 到 n ,数组 relations 中, relations[i] = [xi, yi] 表示一个先修课的关系,也就是课程 xi 必须在课程 yi 之前上。解释:上图展示了题目输入的图。一个最优方案是:第一学期上课程 2 和 3,第二学期上课程 4 ,第三学期上课程 1 ,第四学期上课程 5。然后第二个学期上课程 1 ,第三个学期上课程 4。在一个学期中,你 最多 可以同时上 k 门课,前提是这些课的先修课在之前的学期里已经上过了。

2025-02-02 09:15:00 938

原创 数据结构与算法之栈: LeetCode 1685. 有序数组中差绝对值之和 (Ts版)

换句话说, result[i] 等于 sum(|nums[i]-nums[j]|) ,其中 0 <= j < nums.length 且 j!= i (下标从 0 开始)请你建立并返回一个整数数组 result,它跟 nums 长度相同,且result[i] 等于 nums[i] 与数组中所有其他元素差的绝对值之和。给你一个 非递减 有序整数数组 nums。解释:假设数组下标从 0 开始,那么。2 ) 方案:另一种方案。1 ) 方案1:前缀和。

2025-02-02 09:00:00 261

原创 数据结构与算法之动态规划: LeetCode 2050. 并行课程 III (Ts版)

同时给你一个二维整数数组 relations ,其中 relations[j] = [prevCoursej, nextCoursej] ,表示课程 prevCoursej 必须在课程 nextCoursej 之前 完成(先修课的关系)。课程 5 需在课程 1,2,3 和 4 之后开始,也就是在 max(1,2,3,7) = 7 月开始。所以,最早开始课程 3 的时间是月份 3 ,完成所有课程所需时间为 3 + 5 = 8 个月。课程 1 花费 3 个月,课程 2 花费 2 个月。

2025-02-02 07:15:00 895

原创 数据结构与算法之字符串: LeetCode 8. 字符串转换整数 (atoi) (Ts版)

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。解释:读取在第一个非数字字符“w”处停止。2 ) 方案2:基于特殊符号特殊处理。1 ) 方案1:自动机。返回整数作为最终结果。

2025-02-02 06:45:00 976

原创 数据结构与算法之排序: LeetCode 937. 重新排列日志文件 (Ts版)

解释:字母日志的内容都不同,所以顺序为 “art can”, “art zero”, “own kit dig”。给你一个日志数组 logs。每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符。数字日志保留原来的相对顺序 “dig1 8 1 5 1”, “dig2 3 6”1 ) 方案1:自定义排序。

2025-02-01 10:45:00 245

原创 数据结构与算法之字符串: LeetCode 2042. 检查句子中的数字是否递增 (Ts版)

示例,“a puppy has 2 eyes 4 legs” 是一个由 7 个 token 组成的句子:“2” 和 “4” 是数字,其他像 “puppy” 这样的 tokens 属于单词。给你一个表示句子的字符串 s ,你需要检查 s 中的 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 中的 每个 数字都严格小于它 右侧 的数字)解释:s 中的数字是:7, 51, 50, 60。解释:句子中的数字是:1, 3, 4, 6, 12。解释:s 中的数字是:4, 5, 11, 26。

2025-02-01 05:45:00 371

原创 数据结构与算法之字符串: LeetCode 482. 密钥格式化 (Ts版)

我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了第一组,它可以比 k 短,但仍然必须包含至少一个字符。此外,两组之间必须插入破折号,并且应该将所有小写字母转换为大写字母。给定一个许可密钥字符串 s,仅由字母、数字字符和破折号组成。解释:字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。解释:字符串 S 被分成了两个部分,每部分 4 个字符;注意,两个额外的破折号需要删掉。2 ) 方案2:字符串模拟。1 ) 方案2:数学。

2025-02-01 00:15:00 321

原创 数据结构与算法之二叉树: LeetCode LCP 10. 二叉树任务调度 (Ts版)

通常任务之间是存在依赖关系的,即对于某个任务,你需要先完成他的前导任务(如果非空),才能开始执行该任务。我们保证任务的依赖关系是一棵二叉树,其中 root 为根任务,root.left 和 root.right 为他的两个前导任务(可能为空),root.val 为其自身的执行时间。现在,系统有两个 CPU 核,即我们可以同时执行两个任务,但是同一个任务不能同时在两个核上执行。在任务众多时,不同的调度策略可能会得到不同的总体执行时间,因此寻求一个最优的调度方案是非常有必要的。2 ) 方案2:深度优先-优化。

2025-01-31 15:00:00 289

原创 数据结构与算法之位运算: LeetCode 2166. 设计位集 (Ts版)

1 ) 方案1:利用数组实现。2 ) 方案2:另一种方式。

2025-01-31 12:00:00 350

原创 数据结构与算法之字符串: LeetCode 567. 字符串的排列 (Ts版)

给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的 排列。如果是,返回 true;否则,返回 false。解释:s2 包含 s1 的排列之一 (“ba”).换句话说,s1 的排列之一是 s2 的 子串。2 ) 方案2:滑动窗口优化。1 ) 方案1:滑动窗口。3 ) 方案3:双指针。

2025-01-31 10:30:00 234

原创 数据结构与算法之哈希表: LeetCode 1797. 设计一个验证系统 (Ts版)

你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同)时刻延长 timeToLive 秒。1 ) 方案:哈希表。

2025-01-31 09:30:00 705

原创 数据结构与算法之字符串: LeetCode 791. 自定义字符串排序 (Ts版)

给定两个字符串 order 和 s 。order 的所有字母都是 唯一 的,并且以前按照一些自定义的顺序排序对 s 的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果在 order 中的字符 x 出现字符 y 之前,那么在排列后的字符串中, x 也应该出现在 y 之前返回 满足这个性质的 s 的任意一种排列解释:“a”、“b”、“c"是按顺序出现的,所以"a”、“b”、“c"的顺序应该是"c”、“b”、“a”。因为"d"不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba

2025-01-31 09:15:00 233

原创 数据结构与算法之数组: LeetCode 75. 颜色分类 (Ts版)

1 ) 方案1:单指针。2 ) 方案2:双指针。3 ) 方案3:双指针优化版。

2025-01-31 07:30:00 147

原创 数据结构与算法之字符串: LeetCode 43. 字符串相乘 (Ts版)

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。1 ) 方案1:做加法。2 ) 方案2:做乘法。

2025-01-31 06:00:00 249

原创 数据结构与算法之栈: LeetCode 1472. 设计浏览器历史记录 (Ts版)

你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步。1 ) 方案:数组模拟栈。2 )方案2:优化版。

2025-01-31 04:30:00 286

原创 数据结构与算法之排序: LeetCode 179. 最大数 (Ts版)

1 ) 方案1:排序。2 ) 方案2:排序-优化。 3 ) 方案3:排序-改造快排。

2025-01-31 03:30:00 221

原创 数据结构与算法之幂运算: LeetCode 326. 3 的幂 (Ts版)

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true;否则,返回 false。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n ==2 ) 方案2:判断是否为最大 3 的幂的约数。1 ) 方案1:试除法。

2025-01-31 03:15:00 528

原创 数据结构与算法之二叉树: LeetCode 513. 找树左下角的值 (Ts版)

1 ) 方案1:深度优先搜索。2 ) 方案2:广度优先搜索。

2025-01-31 01:30:00 330

原创 数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)

1 ) 方案1:暴力。2 )方案2:单调栈。

2025-01-30 23:00:00 308

原创 数据结构与算法之排序: LeetCode 1356. 根据数字二进制下 1 的数目排序 (Ts版)

请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。解释:数组中所有整数二进制下都只有 1 个 1 ,所以你需要按照数值大小将它们排序。按照 1 的个数排序得到的结果数组为 [0,1,2,4,8,3,5,6,7]如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。解释:[0] 是唯一一个有 0 个 1 的数。[1,2,4,8] 都有 1 个 1。[3,5,6] 有 2 个 1。[7] 有 3 个 1。请你返回排序后的数组。1 ) 方案1:暴力。

2025-01-30 11:15:00 436

原创 数据结构与算法之动态规划: LeetCode 877. 石子游戏 (Ts版)

假设 Alice 和 Bob 都发挥出最佳水平,当 Alice 赢得比赛时返回 true ,当 Bob 赢得比赛时返回 false。如果 Bob 拿走前 3 颗,那么剩下的是 [4,5],Alice 拿走后 5 颗赢得 10 分。如果 Bob 拿走后 5 颗,那么剩下的是 [3,4],Alice 拿走后 4 颗赢得 9 分。这表明,取前 5 颗石子对 Alice 来说是一个胜利的举动,所以返回 true。Alice 先开始,只能拿前 5 颗或后 5 颗石子。2 ) 方案2:动态规划-优化版。

2025-01-30 10:00:00 486

原创 数据结构与算法之链表: LeetCode 707. 设计链表 (Ts版)

单链表中的节点应该具备两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。你可以选择使用单链表或者双链表,设计并实现自己的链表。1 ) 方案1: 单向链表。2 )方案2:双向链表。

2025-01-30 05:30:00 250

原创 数据结构与算法之哈希表: LeetCode 242. 有效的字母异位词 (Ts版)

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?s 和 t 仅包含小写字母。2 ) 方案2:哈希表。1 ) 方案1:排序。

2025-01-30 04:00:00 246

原创 数据结构与算法之异步: LeetCode 2637. 有时间限制的 Promise 对象 (Ts版)

请你编写一个函数,它接受一个异步函数 fn 和一个以毫秒为单位的时间 t。它应根据限时函数返回一个有 限时 效果的函数。函数 fn 接受提供给 限时 函数的参数。解释:在 t=100ms 时执行 5*5=25 ,没有达到超时时间。解释:在 t=120ms 时执行 5+10=15,没有达到超时时间。1 ) 方案:在新 Promise 内部调用函数。2 )方案2:处理清除 Timeout。解释:此函数始终丢出 Error。

2025-01-30 03:30:00 254

原创 数据结构与算法之字符串: LeetCode 415. 字符串相加 (Ts版)

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。1 ) 方案1:模拟。2 )方案2:双指针。

2025-01-29 19:45:00 268

原创 数据结构与算法之哈希表: LeetCode 202. 快乐数 (Ts版)

1 ) 方案:快慢指针。2 ) 方案2:字典。

2025-01-29 08:00:00 214

原创 数据结构与算法之异步: LeetCode 2721. 并行执行异步函数 (Ts版)

给定一个异步函数数组 functions,返回一个新的 promise 对象 promise。数组中的每个函数都不接受参数并返回一个 promise。所有的 promise 都应该并行执行。解释:所有的 promise 都成功执行。当最后一个 promise 被解析时,返回的 promise 也被解析了。解释:由于其中一个 promise 被拒绝,返回的 promise 也在同一时间被拒绝并返回相同的错误。请在不使用内置的 Promise.all 函数的情况下解决。

2025-01-29 06:30:00 776

英文字典-a-z-txt形式

英文字典

2024-10-26

空空如也

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

TA关注的人

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