
LeetCode刷题
个人LeetCode刷题整理,按照类别进行刷题,每个类别中按照简单-中等-困难依次进行;
题解为个人题解以及各位大佬给出的优秀题解;每个题解下面都有引用链接,如有侵权请联系本人删除;
对于题目有更好的想法的同学可以留言讨论,加油
GJXAIOU
博客更新较为缓慢,可以直接访问GitHub:https://github.com/GJXAIOU
展开
-
[数组][简单]1018.可被5整除的二进制前缀
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-7-11’1018.可被5整除的二进制前缀一、题目给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 a...原创 2019-07-11 21:36:59 · 273 阅读 · 0 评论 -
[数组][简单]1010.总持续时间可被60整除的歌曲
tags:简单参考数组flag: yellowstyle: summerdate: ‘2019-7-11’1010.总持续时间可被60整除的歌曲一、题目在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) %...原创 2019-07-11 21:36:24 · 203 阅读 · 0 评论 -
[数组][简单]121.买卖股票的最佳时机
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-7-11’121.买卖股票的最佳时机一、题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6...原创 2019-07-11 21:35:12 · 97 阅读 · 0 评论 -
[数组][简单]914.卡牌分组
tags:简单参考数组数学flag: greenstyle: summerdate: ‘2019-7-11’914.卡牌分组一、题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 ...原创 2019-07-11 21:34:24 · 236 阅读 · 0 评论 -
[数组][简单]1002.查找常见字符
tags:简单参考数组flag: yellowstyle: summerdate: ‘2019-7-5’1002.查找常见字符一、题目给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。...原创 2019-07-06 08:07:17 · 198 阅读 · 0 评论 -
[数组][简单]118.杨辉三角
tags:简单参考数组动态规划flag: yellowstyle: summerdate: ‘2019-7-5’118.杨辉三角一、题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6...原创 2019-07-06 08:06:20 · 208 阅读 · 0 评论 -
[数组][简单]674.最长连续递增序列
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-7-5’674.最长连续递增序列如果前面大于后面看做 1,否则看为 0;类似于 485.最大连续 1 的个数 :485.最大连续1的个数一、题目给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连...原创 2019-07-05 22:37:04 · 291 阅读 · 0 评论 -
[数组][简单]941.有效的山脉数组
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-6-26’941.有效的山脉数组一、题目给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1...原创 2019-07-05 22:36:08 · 148 阅读 · 0 评论 -
[数组][简单] 888.公平的糖果交换
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-30’888.公平的糖果交换一、问题爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大...原创 2019-07-01 08:40:32 · 153 阅读 · 0 评论 -
[数组][简单]849.到最近的人的最大距离
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-30’849.到最近的人的最大距离一、题目在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例...原创 2019-07-01 08:39:29 · 209 阅读 · 0 评论 -
[数组][简单]989.数组形式的整数加法
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-6-30’989.数组形式的整数加法一、题目对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A...原创 2019-07-01 08:38:38 · 269 阅读 · 0 评论 -
[数组][简单]1089.复写零
tags:简答参考数组flag: greenstyle: summerdate: ‘2019-6-27’1089.复写零一、题目给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。示例 1:输入:[1,0,2,3...原创 2019-06-29 22:36:07 · 198 阅读 · 0 评论 -
[数组][简单]717.1比特与2比特字符
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-29’717.1比特与2比特字符一、题目有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入:bits = [1...原创 2019-06-29 22:35:13 · 165 阅读 · 0 评论 -
[数组][简单]217.存在重复元素
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-27’217.存在重复元素一、题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]...原创 2019-06-27 22:41:50 · 214 阅读 · 0 评论 -
[数组][简单]88.合并两个有序数组
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-6-25’88.合并两个有序数组一、题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空...原创 2019-06-25 19:02:40 · 177 阅读 · 0 评论 -
[数组][简单]189.旋转数组
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-25’189.旋转数组一、题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向...原创 2019-06-25 19:00:34 · 908 阅读 · 0 评论 -
[数组][简单]414.第三大的数
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-25’414.第三大的数一、题目给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2...原创 2019-06-25 18:59:38 · 155 阅读 · 0 评论 -
[数组][简单]485.最大连续1的个数
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-6-24’485.最大连续1的个数一、题目给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的...原创 2019-06-25 08:37:43 · 412 阅读 · 0 评论 -
[数组][简单]13.罗马数字转整数
tags:简单完成数组哈希表flag: greenstyle: summerdate: ‘2019-6-5’13.罗马数字转整数一 、题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,...原创 2019-06-25 08:33:34 · 150 阅读 · 0 评论 -
[数组][简单]14.最长公共前缀
tags:简单遍历二分法分治flag: greenstyle: summerdate: ‘2019-6-6’14.最长公共前缀一、题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“...原创 2019-06-25 08:32:22 · 470 阅读 · 0 评论 -
[数组][简单]20.有效的括号
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-6’20.有效的括号一、题目给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()...原创 2019-06-25 08:30:13 · 190 阅读 · 0 评论 -
[数组][简单]21.合并两个有序链表
tags:简单线性表单链表链表合并flag: greenstyle: summerdate: ‘2019-6-7’21.合并两个有序链表一、题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4-&g...原创 2019-06-25 08:27:47 · 151 阅读 · 0 评论 -
[数组][简单]8.删除排序数组中的重复项
tags:简单快慢指针数组flag: greenstyle: summerdata: ‘2019-6-7’8.删除排序数组中的重复项一、题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [...原创 2019-06-25 08:25:28 · 137 阅读 · 0 评论 -
[数组][简单]832.翻转图像
tags:简单完成数组flag: greenstyle:summerdate: ‘2019-6-9’832.翻转图像一、题目给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1...原创 2019-06-24 15:25:56 · 225 阅读 · 3 评论 -
[数组][简单]836.矩形重叠
tags:简单完成数学flag: greenstyle: summerdate: ‘2019-6-9’836.矩形重叠一、题目矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否...原创 2019-06-24 15:25:06 · 279 阅读 · 0 评论 -
[数组][简单]977.有序数组的平方
tags:简单参考数组双指针flag: greenstyle: summerdate: ‘2019-6-9’977.有序数组的平方一、题目:给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输...原创 2019-06-24 15:23:56 · 308 阅读 · 0 评论 -
[数组][简单]1051.高度检查器
tags:简单完成数组汉明距离flag: greendata: ‘2019-6-9’1051.高度检查器一、题目:学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。示例:输入:[1,1,4,2,1,3]输出:3解释:高度为 4、3 和最后一个...原创 2019-06-24 14:59:53 · 203 阅读 · 0 评论 -
[数组][简单]905.按奇偶排序数组
tags:简单参考数组双指针flag: greenstyle: summerdata: ‘2019-6-10’905.按奇偶排序数组一、题目给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4...原创 2019-06-24 14:59:19 · 129 阅读 · 0 评论 -
[数组][简单]561.数组拆分1
tags:简单完成数组flag: greenstyle: summerdata: ‘2019-6-10’561.数组拆分1一、题目给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4...原创 2019-06-24 14:58:14 · 181 阅读 · 0 评论 -
[数组][简单]509.斐波那契数
tags:简单完成数组斐波那契数列动态规划flag: greenstyle: summerdata: ‘2019-6-10’509.斐波那契数一、题目斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N...原创 2019-06-24 14:52:49 · 384 阅读 · 0 评论 -
[数组][简单]999.车的可用捕获量
tags:简单有思路不会数组flag: greendata: ‘2019-6-10’999.车的可用捕获量一、题目在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的...原创 2019-06-24 14:51:14 · 209 阅读 · 0 评论 -
[数组][简单]867.转置矩阵
tags:简单参考数组flag: greendata: ‘2019-6-10’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...原创 2019-06-24 14:49:24 · 158 阅读 · 0 评论 -
[数组][简单]566.重塑矩阵
tags:简单参考数组flag: greenstyle: summerdata: ‘2019-6-14’566.重塑矩阵一、问题在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有...原创 2019-06-24 14:48:02 · 253 阅读 · 0 评论 -
[数组][简单]766.托普利茨矩阵
tags:简单完成数组flag: greenstyle: summerdata: ‘2019-6-14’766.托普利茨矩阵一、题目如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例 1:输入:matrix = [[1,2,3,4],[5,1,...原创 2019-06-24 14:47:12 · 243 阅读 · 0 评论 -
[数组][简单]985.查询后的偶数和
tags:简单完成超时数组flag: greenstyle: summerdata: ‘2019-6-14’985.查询后的偶数和一、题目给出一个整数数组 A 和一个查询数组 queries。对于第 i 次查询,有 val = queries[i][0], index = queries[i][1],我们会把 val 加到 A[index] 上。然后,第 i 次查询的答...原创 2019-06-24 14:43:29 · 168 阅读 · 0 评论 -
[数组][简单]283.移动零
tags:简单完成数组flag: yellowstyle: summerdate: ‘2019-6-23’283.移动零题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。...原创 2019-06-24 14:40:24 · 136 阅读 · 0 评论 -
[数组][简单]896.单调数列
tags:简单完成数组flag: greenstyle: summerdate: ‘2019-6-23’896.单调数列一、题目如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给...原创 2019-06-24 14:39:19 · 338 阅读 · 0 评论 -
[数组][简单]66.加一
tags:简单参考数组flag: greenstyle: summerdate: ‘2019-6-24’66.加一一、题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释...原创 2019-06-24 14:37:52 · 119 阅读 · 0 评论 -
[数组][简单]9.回文数
tags:简单flag: greendate: ‘2019-06-05 09:38’9.回文数一、题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。...原创 2019-06-22 21:26:11 · 612 阅读 · 0 评论 -
[数组][简单]7.整数反转
tags:简单flag: greendate: '2019-06-05 ’7.整数反转一、题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−...原创 2019-06-22 21:23:22 · 151 阅读 · 0 评论