leetcode
随意
潜行前行
人无聊到一定程度是会努力起来的
展开
-
题目地址(229. 多数元素 II)
摩尔投票法原创 2022-08-29 15:38:31 · 303 阅读 · 0 评论 -
题目地址(138. 复制带随机指针的链表)
题目地址(138. 复制带随机指针的链表)https://leetcode.cn/problems/copy-list-with-random-pointer/题目描述给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原原创 2022-05-27 15:02:40 · 121 阅读 · 1 评论 -
题目地址(140. 单词拆分 II)
题目地址(140. 单词拆分 II)https://leetcode.cn/problems/word-break-ii/题目描述给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。注意:词典中的同一个单词可能在分段中被重复使用多次。 示例 1:输入:s = "catsanddog", wordDict = ["cat","原创 2022-05-27 14:23:48 · 100 阅读 · 0 评论 -
题目地址(218. 天际线问题)
题目地址(218. 天际线问题)https://leetcode.cn/problems/the-skyline-problem/题目描述城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示:lefti 是第 i 座建筑物左边缘的 x 坐标。righti 是第 i原创 2022-05-27 11:56:44 · 125 阅读 · 0 评论 -
题目地址(54. 螺旋矩阵)
题目地址(54. 螺旋矩阵)https://leetcode.cn/problems/spiral-matrix/题目描述给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,1原创 2022-05-27 10:34:14 · 91 阅读 · 0 评论 -
题目地址(227. 基本计算器 II)
题目地址(227. 基本计算器 II)https://leetcode.cn/problems/basic-calculator-ii/题目描述给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1:输入:s = "3+2*2"输出:7示例 2:原创 2022-05-26 15:46:08 · 73 阅读 · 0 评论 -
题目地址(149. 直线上最多的点数)
题目地址(149. 直线上最多的点数)https://leetcode.cn/problems/max-points-on-a-line/题目描述给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1:输入:points = [[1,1],[2,2],[3,3]]输出:3示例 2:输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4原创 2022-05-26 14:51:49 · 88 阅读 · 0 评论 -
题目地址(395. 至少有 K 个重复字符的最长子串)
题目地址(395. 至少有 K 个重复字符的最长子串)https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/题目描述给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 示例 1:输入:s = "aaabb", k = 3输出:3解释:最长子串为 "aaa" ,其中 'a'原创 2022-05-25 10:13:38 · 70 阅读 · 0 评论 -
题目地址(315. 计算右侧小于当前元素的个数)
题目地址(315. 计算右侧小于当前元素的个数)https://leetcode.cn/problems/count-of-smaller-numbers-after-self/题目描述给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1:输入:nums = [5,2,6,1]输出:[2,1,1,0] 解原创 2022-05-23 19:52:31 · 138 阅读 · 0 评论 -
题目地址(166. 分数到小数)
题目地址(166. 分数到小数)https://leetcode.cn/problems/fraction-to-recurring-decimal/题目描述给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。 示例 1:输入:numerator = 1原创 2022-05-23 16:56:42 · 120 阅读 · 0 评论 -
题目地址(169. 多数元素)
题目地址(169. 多数元素)https://leetcode.cn/problems/majority-element/题目描述给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入:nums = [3,2,3]输出:3示例 2:输入:nums = [2,2,1,1,1,2,2]原创 2022-05-23 16:37:10 · 133 阅读 · 0 评论 -
题目地址(127. 单词接龙)
题目地址(127. 单词接龙)https://leetcode.cn/problems/word-ladder/题目描述字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk:每一对相邻的单词只差一个字母。 对于 1 <= i <= k 时,每个&nbs原创 2022-05-23 16:25:37 · 73 阅读 · 0 评论 -
题目地址(230. 二叉搜索树中第K小的元素)
题目地址(230. 二叉搜索树中第K小的元素)https://leetcode.cn/problems/kth-smallest-element-in-a-bst/题目描述给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1]原创 2022-05-23 12:49:27 · 57 阅读 · 0 评论 -
题目地址(4sum-ii/“>454. 四数相加 II)
题目地址(4sum-ii/">454. 四数相加 II)https://leetcode.cn/problems/4sum-ii/题目描述给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 示例 1:输入:nums1 = [1,2]原创 2022-05-23 11:54:52 · 92 阅读 · 0 评论 -
题目地址(131. 分割回文串)
题目地址(131. 分割回文串)https://leetcode.cn/problems/palindrome-partitioning/题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。 示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]] 提示:原创 2022-05-23 10:29:51 · 59 阅读 · 0 评论 -
题目地址(130. 被围绕的区域)
题目地址(130. 被围绕的区域)https://leetcode.cn/problems/surrounded-regions/题目描述给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例 1:输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]输出:[["X"原创 2022-05-21 12:02:24 · 64 阅读 · 0 评论 -
题目地址(324. 摆动排序 II)
题目地址(324. 摆动排序 II)https://leetcode.cn/problems/wiggle-sort-ii/题目描述给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。 示例 1:输入:nums = [1,5,1,1,6,4]输出:[1,6,1,5,1,4]解释:[1,4,1,原创 2022-05-19 17:07:46 · 62 阅读 · 0 评论 -
题目地址(334. 递增的三元子序列)
题目地址(334. 递增的三元子序列)https://leetcode.cn/problems/increasing-triplet-subsequence/题目描述给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。原创 2022-05-19 15:57:48 · 70 阅读 · 0 评论 -
题目地址(328. 奇偶链表)
题目地址(328. 奇偶链表)https://leetcode.cn/problems/odd-even-linked-list/题目描述给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n)&n原创 2022-05-19 15:41:18 · 54 阅读 · 0 评论 -
题目地址(8. 字符串转换整数 (atoi))
题目地址(8. 字符串转换整数 (atoi))https://leetcode.cn/problems/string-to-integer-atoi/题目描述请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终原创 2022-05-19 14:43:54 · 66 阅读 · 0 评论 -
题目地址(378. 有序矩阵中第 K 小的元素)
题目地址(378. 有序矩阵中第 K 小的元素)https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/题目描述给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。你必须找到一个内存复杂度优于 O(n2) 的解决方案。 示例 1:输原创 2022-05-19 13:58:52 · 58 阅读 · 0 评论 -
题目地址(329. 矩阵中的最长递增路径)
题目地址(329. 矩阵中的最长递增路径)https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/题目描述给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。 示例 1:输入:matrix = [[9,9,4],[6,6,8],[2,1,原创 2022-05-19 13:07:48 · 54 阅读 · 0 评论 -
题目地址(124. 二叉树中的最大路径和)
题目地址(124. 二叉树中的最大路径和)https://leetcode.cn/problems/binary-tree-maximum-path-sum/题目描述路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1:输入:root = [1,2,3]输出:6原创 2022-05-13 16:51:17 · 75 阅读 · 0 评论 -
题目地址(538. 把二叉搜索树转换为累加树)
题目地址(538. 把二叉搜索树转换为累加树)https://leetcode.cn/problems/convert-bst-to-greater-tree/题目描述给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点原创 2022-05-13 16:32:01 · 73 阅读 · 0 评论 -
题目地址(1/“>380. O(1) 时间插入、删除和获取随机元素)
题目地址(1/">380. O(1) 时间插入、删除和获取随机元素)https://leetcode.cn/problems/insert-delete-getrandom-o1/题目描述实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时原创 2022-05-13 15:57:59 · 66 阅读 · 0 评论 -
289. 生命游戏
生命游戏根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活.原创 2022-05-13 14:14:43 · 55 阅读 · 0 评论 -
题目地址(437. 路径总和 III)
题目地址(437. 路径总和 III)https://leetcode.cn/problems/path-sum-iii/题目描述给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], t原创 2022-05-13 12:01:13 · 68 阅读 · 0 评论 -
题目地址(560. 和为 K 的子数组)
题目地址(560. 和为 K 的子数组)https://leetcode.cn/problems/subarray-sum-equals-k/题目描述给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2 提示:1 <=原创 2022-05-13 11:41:23 · 169 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变
二维区域和检索 - 矩阵不可变给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回 左上角 (row1, col1) 、右下角 (row2, c.原创 2022-05-13 11:32:40 · 69 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
区域和检索 - 数组不可变给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 n.原创 2022-05-13 11:22:46 · 70 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词
找到字符串中所有字母异位词给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1:输入: s = “cbaebabacd”, p = “abc”输出: [0,6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。示例 2:输入: s = “abab”, p = .原创 2022-05-13 11:08:49 · 63 阅读 · 0 评论 -
28. 实现 strStr()
实现 strStr()实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。示例 1:输入:hay.原创 2022-05-12 22:41:10 · 192 阅读 · 0 评论 -
399. 除法求值
除法求值给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。返回 所有问题的答案 。如果存在某个无法确定的答.原创 2022-05-12 17:20:29 · 68 阅读 · 0 评论 -
91. 解码方法
解码方法一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> “1”‘B’ -> “2”…‘Z’ -> “26”要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中.原创 2022-05-12 12:52:19 · 77 阅读 · 0 评论 -
172. 阶乘后的零
阶乘后的零给定一个整数 n ,返回 n! 结果中尾随零的数量。提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1示例 1:输入:n = 3输出:0解释:3! = 6 ,不含尾随 0示例 2:输入:n = 5输出:1解释:5! = 120 ,有一个尾随 0示例 3:输入:n = 0输出:0关键点重点计算 有多少个10 。 2 的因子肯定比 5 的因子多,计算 5 的因子数目即可。 25 有两个 5 因子,因此需要循环除 5 即可c.原创 2022-05-10 14:37:46 · 84 阅读 · 0 评论 -
371. 两整数之和
两整数之和给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5关键点模拟运算:进位class Solution { public int getSum(int a, int b) { while(b!=0){ int carry = (a & b) << 1; .原创 2022-05-10 14:22:10 · 49 阅读 · 0 评论 -
179. 最大数
最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:“210”示例 2:输入:nums = [3,30,34,5,9]输出:“9534330”关键点先排序,在拼接class Solution { public String largestNumber(int[] nums) { String[] dat.原创 2022-05-10 14:12:13 · 64 阅读 · 0 评论 -
204. 计数质数
计数质数给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0class Solution { public int countPrimes(int n) { int[] isPrime = new int[n]; Arrays.fill(isPrime,1.原创 2022-05-10 12:59:02 · 78 阅读 · 0 评论 -
150. 逆波兰表达式求值
逆波兰表达式求值根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,“+”,“3”,“*”]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9关键点栈class Solution { .原创 2022-05-10 11:46:31 · 57 阅读 · 0 评论 -
134. 加油站
加油站在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。示例 1:输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]输出: 3解释:从 .原创 2022-05-10 11:29:17 · 101 阅读 · 0 评论