
LeetCode 题解
文章平均质量分 56
火星飞鸟
学习前端ing...
展开
-
「每日一题」只出现一次的数字 III
这是 LeetCode 上 2021-10-30 的每日一题:「260. 只出现一次的数字 III」1. 题目描述给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?示例1 :输入:nums = [1,2,1,3,2,5]输出:[3,5]解释:[5, 3] 也是有效的答案。示例2 :输入:nums = [-1,0]输出:[-1,.原创 2021-10-30 19:30:32 · 217 阅读 · 0 评论 -
「每日一题」重复的DNA序列
这是 LeetCode 上 2021-10-8 的每日一题:「187. 重复的DNA序列」1. 题目描述所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。示例1 :输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出:["AA.原创 2021-10-08 10:57:39 · 376 阅读 · 0 评论 -
「每日一题」两整数之和
这是 LeetCode 上 2021-9-26 的每日一题:「371. 两整数之和」1. 题目描述给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例:输入:a = 1, b = 2输出:32. 解答对于位运算中的加法,只有四种情况:0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 0(进位 1)总结规律可得,对于a、b,不考虑进位的加法 = a^b。例如,对于a=2,b=3:a = 0010b = 0011a ^.原创 2021-09-26 09:34:02 · 599 阅读 · 0 评论 -
「每日一题」扁平化多级双向链表
这是 LeetCode 上 2021-9-24 的每日一题:「430. 扁平化多级双向链表」1. 题目描述多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11.原创 2021-09-24 09:13:36 · 196 阅读 · 0 评论 -
「每日一题」寻找峰值
这是 LeetCode 上 2021-9-15 的每日一题:「162. 寻找峰值」1. 题目描述峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1] = nums[n] = -∞。你必须实现时间复杂度为O(log n)的算法来解决此问题。示例1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例2:.原创 2021-09-15 08:57:25 · 381 阅读 · 0 评论 -
「每日一题」通过删除字母匹配到字典里最长单词
这是 LeetCode 上 2021-9-14 的每日一题:「524. 通过删除字母匹配到字典里最长单词」1. 题目描述给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。示例1:输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]输出:"app.原创 2021-09-14 09:02:56 · 208 阅读 · 0 评论 -
「每日一题」回旋镖的数量
这是 LeetCode 上 2021-9-13 的每日一题:「447. 回旋镖的数量」1. 题目描述给定平面上n对互不相同的点points,其中points[i] = [xi, yi]。回旋镖是由点(i, j, k)表示的元组 ,其中i和j之间的距离和i和k之间的距离相等(需要考虑元组的顺序)。返回平面上所有回旋镖的数量。示例1:输入:points = [[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[.原创 2021-09-13 09:35:08 · 237 阅读 · 0 评论 -
「每日一题」找到需要补充粉笔的学生编号
这是 LeetCode 上 2021-9-10 的每日一题:「1894. 找到需要补充粉笔的学生编号」1. 题目描述一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。当编号为 i 的学生回答问题时,他会.原创 2021-09-10 09:38:13 · 223 阅读 · 0 评论 -
「每日一题」IPO
这是 LeetCode 上 2021-9-8 的每日一题:「502. IPO」1. 题目描述假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i] 。最初.原创 2021-09-08 09:35:45 · 349 阅读 · 0 评论 -
「每日一题」分割平衡字符串
这是 LeetCode 上 2021-9-7 的每日一题:「1221. 分割平衡字符串」1. 题目描述在一个 平衡字符串 中,'L'和'R'字符的数量是相同的。给你一个平衡字符串s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。示例1:输入:s = "RLRRLLRLRL"输出:4解释:s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。示.原创 2021-09-07 09:02:35 · 298 阅读 · 0 评论 -
「每日一题」二分查找
这是 LeetCode 上 2021-9-6 的每日一题:「704. 二分查找」1. 题目描述给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释:.原创 2021-09-06 08:07:07 · 212 阅读 · 0 评论 -
「每日一题」斐波那契数列
这是 LeetCode 上 2021-9-4 的每日一题:「剑指 Offer 10- I. 斐波那契数列」1. 题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7(1000000007),如计算初始结果为:10.原创 2021-09-04 10:53:22 · 413 阅读 · 0 评论 -
「每日一题」最小K个数
这是 LeetCode 上 2021-9-3 的每日一题:「面试题 17.14. 最小K个数」1. 题目描述设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]2. 解答1. 排序排序 + 返回前k个数。const smallestK = (arr, k) => { arr.sort((a, b) => a - b); arr.length.原创 2021-09-03 09:07:47 · 214 阅读 · 0 评论 -
「每日一题」链表中倒数第k个节点
这是 LeetCode 上 2021-9-2 的每日一题:「剑指 Offer 22. 链表中倒数第k个节点」1. 题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.2.原创 2021-09-02 08:58:58 · 230 阅读 · 0 评论 -
「每日一题」比较版本号
这是 LeetCode 上2021-9-1的每日一题:「165. 比较版本号」1. 题目描述给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的.原创 2021-09-01 09:06:45 · 1234 阅读 · 0 评论 -
「每日一题」航班预订统计
这是 LeetCoded 上2021-8-31的每日一题:「1109. 航班预订统计」1. 题目描述这里有n个航班,它们分别从1到n进行编号。有一份航班预订表bookings,表中第i条预订记录bookings[i] = [firsti, lasti, seatsi]意味着在从firsti到lasti(包含firsti和lasti)的每个航班上预订了seatsi个座位。请你返回一个长度为n的数组answer,其中answer[i]是航班i上预订的座位总数。示例 1:输入:bookings =.原创 2021-08-31 10:15:07 · 311 阅读 · 0 评论 -
「每日一题」按权重随机选择
这是 LeetCoded 上2021-8-30的每日一题:「528. 按权重随机选择」1. 题目描述给定一个正整数数组w,其中w[i]代表下标i的权重(下标从0开始),请写一个函数pickIndex,它可以随机地获取下标i,选取下标i的概率与w[i]成正比。例如,对于w = [1, 3],挑选下标0的概率为1 / (1 + 3) = 0.25 (即,25%),而选取下标1的概率为3 / (1 + 3) = 0.75即,75%)。也就是说,选取下标i的概率为w[i] / sum(w)。示例 1:.原创 2021-08-30 10:15:56 · 249 阅读 · 0 评论 -
「每日一题」所有奇数长度子数组的和
这是 LeetCoded 上2021-8-29的每日一题:「1588. 所有奇数长度子数组的和」1. 题目描述给你一个正整数数组arr,请你计算所有可能的奇数长度子数组的和。子数组定义为原数组中的一个连续子序列。请你返回arr中所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5.原创 2021-08-29 14:13:14 · 686 阅读 · 0 评论