![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode算法刷题记录
孙仲谋111
这个作者很懒,什么都没留下…
展开
-
380. O(1) 时间插入、删除和获取随机元素
int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有 相同的概率 被返回。bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;否则,返回 false。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;否则,返回 false。你必须实现类的所有函数,并满足每个函数的 平均 时间复杂度为 O(1)。原创 2023-08-21 17:48:38 · 113 阅读 · 0 评论 -
238. 除自身以外数组的乘积
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]原创 2023-08-20 08:46:27 · 130 阅读 · 0 评论 -
274. H 指数
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。输入:citations = [3,0,6,1,5]输入:citations = [1,3,1]原创 2023-08-20 08:35:45 · 141 阅读 · 0 评论 -
121. 买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2023-08-20 08:24:54 · 103 阅读 · 0 评论 -
228. 汇总区间
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x。输出:[“0”,“2->4”,“6”,“8->9”]输入:nums = [0,2,3,4,6,8,9]输入:nums = [0,1,2,4,5,7]输出:[“0->2”,“4->5”,“7”]“a->b” ,如果 a!“a” ,如果 a == b。原创 2023-08-19 11:00:59 · 105 阅读 · 0 评论 -
219. 存在重复元素 II
输入:nums = [1,2,3,1,2,3], k = 2。输入:nums = [1,2,3,1], k = 3。输入:nums = [1,0,1,1], k = 1。原创 2023-08-19 09:19:02 · 89 阅读 · 0 评论 -
290. 单词规律
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”原创 2023-08-19 08:46:35 · 112 阅读 · 0 评论 -
205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。给定两个字符串 s 和 t ,判断它们是否是同构的。输入:s = “egg”, t = “add”原创 2023-08-18 16:11:30 · 96 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。原创 2023-08-18 15:05:53 · 300 阅读 · 0 评论 -
125. 验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串。给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。字母和数字都属于字母数字字符。原创 2023-08-18 14:43:03 · 59 阅读 · 0 评论 -
6. N 字形变换
【代码】6. N 字形变换。原创 2023-08-18 14:34:16 · 41 阅读 · 0 评论 -
27. 移除元素
【代码】27. 移除元素。原创 2023-08-16 20:36:51 · 41 阅读 · 0 评论 -
143. 重排链表
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4,5]输入:head = [1,2,3,4]输出:[1,5,2,4,3]输出:[1,4,2,3]原创 2023-08-10 11:16:37 · 87 阅读 · 0 评论 -
128. 最长连续序列
解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]原创 2023-08-08 16:55:21 · 300 阅读 · 0 评论 -
415. 字符串相加
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。输入:num1 = “11”, num2 = “123”输入:num1 = “456”, num2 = “77”输入:num1 = “0”, num2 = “0”原创 2023-08-08 10:58:18 · 77 阅读 · 0 评论 -
5. 最长回文子串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。给你一个字符串 s,找到 s 中最长的回文子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”原创 2023-08-08 10:39:36 · 93 阅读 · 0 评论 -
3. 无重复字符的最长子串
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”输入: s = “bbbbb”原创 2023-08-08 09:49:50 · 80 阅读 · 0 评论 -
54. 螺旋矩阵
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5]原创 2023-08-07 16:50:20 · 80 阅读 · 0 评论 -
139. 单词拆分(leetcode刷题记录)
输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输入: s = “leetcode”, wordDict = [“leet”, “code”]注意,你可以重复使用字典中的单词。原创 2023-08-07 10:37:33 · 74 阅读 · 0 评论 -
200. 岛屿数量(leetcode刷题记录)
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:grid = [输入:grid = [原创 2023-08-07 09:56:31 · 83 阅读 · 0 评论 -
57. 插入区间(leetcode刷题记录)
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。原创 2023-08-04 13:18:50 · 69 阅读 · 0 评论 -
50. Pow(x, n) (leetcode刷题记录)
【代码】50. Pow(x, n) (leetcode刷题记录)原创 2023-08-04 11:15:09 · 49 阅读 · 0 评论 -
43. 字符串相乘(leetcode刷题记录)
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。原创 2023-08-04 10:46:50 · 81 阅读 · 0 评论 -
38. 外观数列(leetcode刷题记录)
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 “111221”描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 “1211”「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 “21”描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”原创 2023-08-03 21:39:32 · 234 阅读 · 0 评论 -
80. 删除有序数组中的重复项 II (力扣刷题)
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。原创 2023-08-03 17:09:11 · 191 阅读 · 0 评论