leetcode
分享leetcode习题的解法
简
这个作者很懒,什么都没留下…
展开
-
[leetcode]两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: num...原创 2018-11-27 01:10:50 · 151 阅读 · 0 评论 -
[leetcode]Excel表列序号
171. Excel表列序号给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1原创 2018-11-26 09:37:06 · 168 阅读 · 0 评论 -
[leetcode]Excel表列名称
168. Excel表列名称给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: "A"原创 2018-11-26 09:37:25 · 141 阅读 · 0 评论 -
[leetcode]最小面积矩形
939. 最小面积矩形给定在 xy 平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。如果没有任何矩形,就返回 0。示例 1:输入:[[1,1],[1,3],[3,1],[3,3],[2,2]]输出:4示例 2:输入:[[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]]输出:2提示:1 <= points....原创 2018-11-23 13:47:59 · 817 阅读 · 0 评论 -
[leetcode]单调数列
896. 单调数列如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:...原创 2018-11-24 11:18:10 · 309 阅读 · 0 评论 -
[leetcode]棒球比赛
682. 棒球比赛你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数...原创 2018-11-25 01:10:14 · 181 阅读 · 0 评论 -
[leetcode]检测大写字母
520. 检测大写字母给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1原创 2018-11-22 09:34:01 · 158 阅读 · 0 评论 -
[leetcode]字符串中的第一个唯一字符
387. 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。C++解法:class Solution {public: int firstUniqChar(string s...原创 2018-11-22 09:35:17 · 100 阅读 · 0 评论 -
[leetcode]反转字符串
344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"C++解法:class Solution {p原创 2018-11-22 09:36:32 · 116 阅读 · 0 评论 -
[leetcode]各位相加
258. 各位相加给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?C++解法:class Solution {public: int a...原创 2018-11-26 09:35:54 · 127 阅读 · 0 评论 -
[leetcode]位1的个数
191. 位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 000000000000000000000000100...原创 2018-11-26 09:36:38 · 130 阅读 · 0 评论 -
[leetcode]求众数
169. 求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2C++解法:class Solution {public: int majorityElement(v...原创 2018-11-26 09:37:16 · 299 阅读 · 0 评论 -
[leetcode]验证回文串
125. 验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseC++解法:class Solution {public: ...原创 2018-11-21 10:15:15 · 110 阅读 · 0 评论 -
[leetcode]报数
38. 报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作原创 2018-11-20 00:02:41 · 91 阅读 · 0 评论 -
[leetcode]最长公共前缀
14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有原创 2018-11-19 22:03:40 · 90 阅读 · 0 评论 -
[leetcode]回文数
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2018-11-19 21:49:11 · 96 阅读 · 0 评论 -
[leetcode]找两个有序数组的中位数
4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3...原创 2018-11-19 21:32:48 · 301 阅读 · 0 评论 -
[leetcode]删除列以使之有序
删除列以使之有序给出由 N 个小写字母串组成的数组 A,所有小写字母串的长度都相同。现在,我们可以选择任何一组删除索引,对于每个字符串,我们将删除这些索引中的所有字符。举个例子,如果字符串为 “abcdef”,且删除索引是 {0, 2, 3},那么删除之后的最终字符串为 “bef”。假设我们选择了一组删除索引 D,在执行删除操作之后,A 中剩余的每一列都是有序的。形式上,第 c 列为...原创 2018-11-18 22:45:12 · 298 阅读 · 0 评论 -
[leetcode]矩形重叠
836. 矩形重叠矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2...原创 2018-11-24 11:18:50 · 352 阅读 · 0 评论 -
[leetcode]翻转图像
832. 翻转图像给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],...原创 2018-11-24 11:18:59 · 113 阅读 · 0 评论 -
[leetcode]宝石与石头
771. 宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3原创 2018-11-25 01:09:32 · 125 阅读 · 0 评论 -
[leetcode]分割数组
915. 分割数组给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:left 中的每个元素都小于或等于 right 中的每个元素。left 和 right 都是非空的。left 要尽可能小。在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。示例 1:输入:[5,0,3,8,6]输出:3解释:left = ...原创 2018-11-24 11:17:40 · 650 阅读 · 0 评论 -
[leetcode]按奇偶排序数组
905. 按奇偶排序数组给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <= A[i...原创 2018-11-24 11:17:59 · 208 阅读 · 0 评论 -
[leetcode]转置矩阵
867. 转置矩阵给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:1 <= A.lengt...原创 2018-11-24 11:18:21 · 121 阅读 · 0 评论 -
[leetcode]山脉数组的峰顶索引
852. 山脉数组的峰顶索引我们把符合下列属性的数组 A 称作山脉:A.length >= 3存在 0 < i < A.length - 1 使得A[0] < A[1] < … A[i-1] < A[i] > A[i+1] >… > A[A.length - 1]给定一个确定为山脉的数原创 2018-11-24 11:18:41 · 249 阅读 · 0 评论 -
[leetcode]二叉搜索树的范围和
938. 二叉搜索树的范围和给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示...原创 2018-11-23 13:48:14 · 804 阅读 · 0 评论 -
[leetcode]重新排列日志文件
937. 重新排列日志文件你有一个日志数组 logs。每条日志都是以空格分隔的字串。对于每条日志,其第一个字为字母数字标识符。然后,要么:标识符后面的每个字将仅由小写字母组成,或;标识符后面的每个字将仅由数字组成。我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按字母顺序排序,忽略标识符...原创 2018-11-23 13:48:25 · 206 阅读 · 0 评论 -
[leetcode]最近的请求次数
933. 最近的请求次数写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。示例:...原创 2018-11-23 13:48:35 · 329 阅读 · 0 评论 -
[leetcode]和相同的二元子数组
930. 和相同的二元子数组在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组。示例:输入:A = [1,0,1,0,1], S = 2输出:4解释:如下面黑体所示,有 4 个满足题目要求的子数组:[1,0,1,0,1][1,0,1,0,1][1,0,1,0,1][1,0,1,0,1]提示:A.length <= 300000 <=...原创 2018-11-23 13:48:44 · 244 阅读 · 0 评论 -
[leetcode]独特的电子邮件地址
929. 独特的电子邮件地址每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。除了小写字母,这些电子邮件还可能包含 ‘,’ 或 ‘+’。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点(’.’),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,"...原创 2018-11-23 13:48:53 · 686 阅读 · 0 评论 -
[leetcode]长按键入
925. 长按键入你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 ...原创 2018-11-23 13:49:02 · 225 阅读 · 0 评论 -
[leetcode]按奇偶排序数组 II
922. 按奇偶排序数组 II给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 ...原创 2018-11-23 13:49:10 · 233 阅读 · 0 评论 -
[leetcode]仅仅反转字母
917. 仅仅反转字母给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=c原创 2018-11-23 13:49:29 · 135 阅读 · 0 评论 -
[leetcode]只出现一次的数字
136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4C++解法:class Solution {public: int sin...原创 2018-11-21 10:15:28 · 128 阅读 · 0 评论 -
[leetcode]买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 ...原创 2018-11-21 10:15:39 · 383 阅读 · 0 评论 -
[leetcode]杨辉三角 II
119. 杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?C++解法:class Solution {public: vector<int> getRow(int rowIndex...原创 2018-11-21 10:14:50 · 114 阅读 · 0 评论 -
[leetcode]杨辉三角
118. 杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]C++解法:class Solution {public: vector<vec...原创 2018-11-21 10:15:03 · 143 阅读 · 0 评论 -
[leetcode]二叉树的最大深度
104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。C++解法:/** * Definition for a ...原创 2018-11-21 10:15:54 · 100 阅读 · 0 评论 -
[leetcode]合并两个有序数组
88. 合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m ...原创 2018-11-21 10:16:05 · 137 阅读 · 0 评论 -
[leetcode]删除排序数组中的重复项 II
80. 删除排序数组中的重复项 II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。...原创 2018-11-21 10:16:17 · 134 阅读 · 0 评论