LeetCode
klbc
这个作者很懒,什么都没留下…
展开
-
LeetCode - 665. 非递减数列
描述给你一个长度为n的整数数组,请你判断在 最多 改变1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释: 你不能在只...原创 2021-02-07 21:30:52 · 83 阅读 · 0 评论 -
LeetCode - 537. 复数乘法
描述给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1:输入: "1+1i", "1+1i"输出: "0+2i"解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。示例 2:输入: "1+-1i", "1+-1i"输出: "0+-2i"解释: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式原创 2021-02-03 17:15:43 · 81 阅读 · 0 评论 -
LeetCode - 71. 简化路径
描述以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。.原创 2021-02-01 23:15:53 · 102 阅读 · 0 评论 -
LeetCode - 150. 逆波兰表达式求值
描述根据 逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入: ["4", "13", "5", "/",...原创 2021-02-01 22:18:54 · 112 阅读 · 0 评论 -
LeetCode - 20. 有效的括号
描述给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:true提示:...原创 2021-02-01 21:30:39 · 74 阅读 · 0 评论 -
LeetCode - 92. 反转链表 II
描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii/求解 class Solutio...原创 2021-02-01 18:45:29 · 95 阅读 · 0 评论 -
LeetCode - 206. 反转链表
描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list/求解 class Solution { public: // 方.原创 2021-02-01 18:21:20 · 109 阅读 · 0 评论 -
LeetCode - 204. 计数质数
描述统计所有小于非负整数n的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 106来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-primes/求解 class Solution...原创 2021-02-01 15:34:31 · 80 阅读 · 0 评论 -
LeetCode - 220. 存在重复元素 III
掉坑总结:1)int类型值与参数t相加的时候可能出现溢出,编码的时候没有考虑到;2)理解为什么不能用upper_bound来判断,显然如果集合中存在的元素均远远大于当前给定的比较元素num,且num+t也小于给定的元素,则不管upper_bound(num-t) 或者 upper_bound(num+t)均指向第一个元素,无法判断。描述在整数数组 nums 中,是否存在两个下标 i 和 j,使得nums [i] 和nums [j]的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝...原创 2021-01-30 16:51:04 · 90 阅读 · 0 评论 -
LeetCode - 217. 存在重复元素
描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplica..原创 2021-01-30 15:19:49 · 113 阅读 · 0 评论 -
LeetCode - 219. 存在重复元素 II
描述给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的 绝对值 至多为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false来源:力扣(LeetCode)链接:https...原创 2021-01-30 14:59:47 · 87 阅读 · 0 评论 -
LeetCode - 447. 回旋镖的数量
描述给定平面上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],[0,0]]示例 2:输入:points = ...原创 2021-01-30 14:34:41 · 245 阅读 · 0 评论 -
LeetCode - 49. 字母异位词分组
掉坑总结:方法二中对字符串先排序,使用散列表的形式其实我一开始就想到了,但是我怀疑这样对所有字符串排序是否太耗时???(我是那样坚定的认为的),因此我才想出了方法一种那种通过下标的方式,然而现实就是我认为性能好的方法一效率远远低于我认为效率不好的方法二,也算一个警告,性能不是分析那样想当然的。描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:原创 2021-01-30 14:03:02 · 70 阅读 · 0 评论 -
LeetCode - 454. 四数相加 II
掉坑总结:关联容器中Container.count(key) 返回的是键值key出现的次数,在非mulpti中,要么是0要么是1,mulptiz中可能大于1,跟value值没有关系,其实这个点事直到的,大意了,在哪儿调试了好久。。。。描述给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ ...原创 2021-01-29 12:03:10 · 103 阅读 · 0 评论 -
LeetCode - 18. 四数之和
掉坑总结:注意,该题中可能出现target为负数,因此不能像正数一样提前终止循环,比如一个测试用例如下(排序后)[-5, -4, -3, -2, 1, 3, 3, 5], target为-11,不能判断nums[0] = -5已经大于 -11就终止循环,当然如果是正数没有问题。代码如下(注释部分) for (int i = 0; i < n - 3; ++i) { if (i > 0 && nums[i] =..原创 2021-01-29 11:11:40 · 86 阅读 · 0 评论 -
LeetCode - 16. 最接近的三数之和
描述给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3<= nums[i]<= 10^3...原创 2021-01-28 21:51:02 · 69 阅读 · 0 评论 -
LeetCode - 15. 三数之和
描述给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <...原创 2021-01-28 20:35:55 · 124 阅读 · 0 评论 -
LeetCode - 451. 根据字符出现频率排序
描述给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:"Aabb"输原创 2021-01-28 16:15:51 · 176 阅读 · 0 评论 -
LeetCode - 724. 寻找数组的中心索引
描述给定一个整数类型的数组nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6..原创 2021-01-28 15:27:09 · 68 阅读 · 0 评论 -
LeetCode - 350. 两个数组的交集 II
描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果nums1的大小比nums2小很多,哪...原创 2021-01-27 21:48:31 · 91 阅读 · 0 评论 -
LeetCode - 349. 两个数组的交集
描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arra..原创 2021-01-27 21:46:20 · 108 阅读 · 0 评论 -
LeetCode - 242. 有效的字母异位词
描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem.原创 2021-01-27 21:44:41 · 74 阅读 · 0 评论 -
LeetCode - 202. 快乐数
描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1来源:力扣(Le...原创 2021-01-27 21:43:09 · 89 阅读 · 0 评论 -
LeetCode - 290. 单词规律
描述给定一种规律 pattern和一个字符串str,判断 str 是否遵循相同的规律。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str = "dog cat cat fish"输出: false示例 3:输入: patter...原创 2021-01-27 21:41:24 · 108 阅读 · 0 评论 -
LeetCode - 567. 字符串的排列
描述给定两个字符串s1和s2,写一个函数来判断 s2 是否包含 s1的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False注意:输入的字符串只包含小写字母两个字符串的长度都在 [1, 10,000] 之间来源:力扣(LeetCo...原创 2021-01-27 11:18:02 · 132 阅读 · 0 评论 -
LeetCode - 1128. 等价多米诺骨牌对的数量
描述给你一个由一些多米诺骨牌组成的列表dominoes。如果其中某一张多米诺骨牌可以通过旋转 0度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b]和dominoes[j] = [c, d]等价的前提是a==c且b==d,或是a==d 且b==c。在0 <= i < j < dominoes.length的前提下,找出满足dominoes[i] 和dominoes[j]等价的骨牌对 ...原创 2021-01-26 22:36:43 · 89 阅读 · 0 评论 -
LeetCode - 200. 岛屿数量
描述给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid...原创 2021-01-26 16:34:02 · 131 阅读 · 0 评论 -
LeetCode - 959. 由斜杠划分区域
描述在由 1 x 1 方格组成的 N x N 网格grid 中,每个 1 x 1方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 "\\"表示。)。返回区域的数目。示例 1:输入:[" /","/ "]输出:2解释:2x2 网格如下:示例 2:输入:[" /"," "]输出:1解释:2x2 网格如下:示例 3:输入:["\\/","/\\"]...原创 2021-01-25 19:18:50 · 106 阅读 · 0 评论 -
LeetCode - 897. 递增顺序查找树
写在前面的话:虽然这是一个简单题,但是做这道题目的时候顺便写了通过给定数组新建二叉树,打印二叉树等,掉了好几次坑,做一个简单总结1)普通二叉树不一定是完全二叉树,不要以为是二叉树就是完全二叉树;2)层序遍历跟(先、中、后序遍历)都不同,像个猪一样大意了,导致在打印二叉树哪儿对结果纠结了很久;3)后序遍历的时候,最后一个结点的左、右子节点都不一定为 nullptr, 如果有特殊需要记得处理,比如将最后一个结点的 left/right 都置位 nullptr;4)中序遍历的时候,最有一个结点原创 2021-01-25 16:25:14 · 94 阅读 · 0 评论 -
LeetCode - 674. 最长连续递增序列
描述给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。示例 1:输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,.原创 2021-01-24 22:14:44 · 69 阅读 · 0 评论 -
LeetCode - 1319. 连通网络的操作次数
描述用以太网线缆将n台计算机连接成一个网络,计算机的编号从0到n-1。线缆用connections表示,其中connections[i] = [a, b]连接了计算机a和b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回-1 。示...原创 2021-01-23 17:12:36 · 95 阅读 · 1 评论 -
LeetCode - 1. 两数之和
描述给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6...原创 2021-01-22 20:24:24 · 67 阅读 · 1 评论 -
LeetCode - 2. 两数相加
描述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9...原创 2021-01-22 20:08:15 · 76 阅读 · 0 评论 -
LeetCode - 989. 数组形式的整数加法
描述对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例 3:输入:A = [...原创 2021-01-22 19:39:44 · 104 阅读 · 0 评论 -
LeetCode - 438. 找到字符串中所有字母异位词
描述给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 ...原创 2021-01-21 11:38:25 · 107 阅读 · 0 评论 -
LeetCode - 3. 无重复字符的最长子串
描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度...原创 2021-01-20 17:18:53 · 60 阅读 · 0 评论 -
LeetCode - 11. 盛最多水的容器
描述给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2...原创 2021-01-20 16:14:00 · 71 阅读 · 0 评论 -
LeetCode - 628. 三个数的最大乘积
描述给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-of-three-nu原创 2021-01-20 14:06:15 · 91 阅读 · 0 评论 -
LeetCode - 1584. 连接所有点的最小费用
描述给你一个points数组,表示 2D 平面上的一些点,其中points[i] = [xi, yi]。连接点[xi, yi] 和点[xj, yj]的费用为它们之间的 曼哈顿距离:|xi - xj| + |yi - yj|,其中|val|表示val的绝对值。请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有一条简单路径时,才认为所有点都已连接。示例 1:输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]]输出...原创 2021-01-19 20:59:59 · 259 阅读 · 1 评论 -
LeetCode - 721. 账户合并
描述给定一个列表 accounts,每个元素 accounts[i]是一个字符串列表,其中第一个元素 accounts[i][0]是名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式返回账户:每个账户的第一个元素...原创 2021-01-18 18:48:13 · 145 阅读 · 0 评论