![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
靠谱Mr.
这个作者很懒,什么都没留下…
展开
-
字节面试题:一个链表,奇数位升序偶数位降序,让链表变成升序的
题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的。比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9。分析:这道题可以分成三步:首先根据奇数位和偶数位拆分成两个链表。然后对偶数链表进行反转。最后将两个有序链表进行合并。package linkedNode;/** * 输入: 1->8->3->6->5->4->7->2->NULL * 输出: 1->2->3->4->5原创 2021-03-27 23:19:55 · 808 阅读 · 0 评论 -
二分查找及其变种汇总
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。由于二分查找的时间复杂度为O(log n),所以在遇到有序数组,优先考虑二分查找。二分查找最容易遇到的错误就是边界问题。...原创 2020-04-23 14:53:16 · 300 阅读 · 1 评论 -
LeetCode刷题:单调数列
题目896. 单调数列如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。题解法一数组题的比较问题和链表题常用双指针法,因此首先考虑...原创 2020-04-17 21:02:10 · 308 阅读 · 0 评论 -
LeetCode刷题:两句话中的不常见单词
题目两句话中的不常见单词给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。题解这道题其实是找出A+B中出现一次的单词解法一想到了Set集合可以去掉重复元素的特点,所以采用Set集合进行。cla...原创 2020-04-16 23:43:30 · 149 阅读 · 0 评论 -
LeetCode代码模板
贴一位大佬的LeetCode代码模板,链接为https://blog.csdn.net/fuxuemingzhu/article/details/101900729转载 2020-04-09 16:41:37 · 1113 阅读 · 0 评论 -
LeetCode刷题:盛最多水的容器
题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示...原创 2020-03-22 16:20:50 · 203 阅读 · 0 评论 -
LeetCode刷题:重塑矩阵
题目在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: n...原创 2020-01-20 10:36:02 · 194 阅读 · 0 评论 -
LeetCode刷题:数组拆分1
题目:给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1, 10000]....原创 2020-01-16 14:58:28 · 428 阅读 · 0 评论 -
LeetCode刷题:最大连续1的个数
**题目**给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。**题解**思路:找到0的位置就相当于找到了连续1的个数时间和内存消耗为:代码为: clas...原创 2019-12-31 16:21:52 · 123 阅读 · 0 评论 -
LeetCode刷题:找到所有数组中消失的数字
题目给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]题解想到的方法需...原创 2019-12-30 19:47:56 · 280 阅读 · 0 评论 -
LeetCode刷题:移动零
题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解思路:把非零的都往前移,最后几位补0时间和内存消耗为:代码为: class Solution { public void mov...原创 2019-12-16 21:41:40 · 89 阅读 · 3 评论 -
LeetCode刷题:存在重复元素 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...原创 2019-12-15 22:04:21 · 91 阅读 · 0 评论 -
LeetCode刷题:存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 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题解思路:1 双重for循环,但是在le...原创 2019-12-14 23:07:43 · 151 阅读 · 0 评论 -
LeetCode刷题:旋转数组
题目给定一个数组,将数组中的元素向右移动 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]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99]...原创 2019-12-13 23:55:07 · 126 阅读 · 0 评论 -
LeetCode刷题:多数元素
题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2题解思路:把不同的数字看作敌人,打一架则失去一个体力点。时间和内存消耗为:代码为: class So...原创 2019-12-10 10:41:16 · 213 阅读 · 0 评论 -
LeetCode刷题:两数之和 II - 输入有序数组
题目给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], ta...原创 2019-12-09 17:09:45 · 80 阅读 · 0 评论 -
LeetCode刷题:买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2019-12-09 16:35:00 · 126 阅读 · 0 评论 -
LeetCode刷题:买卖股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-12-09 15:44:49 · 92 阅读 · 0 评论 -
LeetCode刷题:杨辉三角 II
题目给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?题解根据杨辉三角的性质,利用下一行除了首尾两数其余都为上一行的两数之和。时间和内存消耗为:代码为:class Solution { public Li...原创 2019-12-09 15:18:12 · 151 阅读 · 0 评论 -
LeetCode刷题:爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2...原创 2019-12-08 18:14:52 · 145 阅读 · 0 评论 -
LeetCode刷题:矩形重叠
题目矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:re...原创 2019-12-06 16:07:50 · 111 阅读 · 0 评论 -
LeetCode刷题:错误的集合
题目集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的...原创 2019-12-05 09:50:56 · 220 阅读 · 0 评论 -
LeetCode刷题:自除数
题目自除数 是指可以被它包含的每一位数除尽的数。例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。还有,自除数不允许包含 0 。给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。示例 1:输入: 上边界left = 1, 下边界right = 22输出: [1, 2, 3, 4, 5, 6,...原创 2019-12-04 21:41:51 · 109 阅读 · 0 评论 -
LeetCode刷题:平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False题解:自己思路,从0循环到sqrt©大佬思路,费马平方和定理,一个非负整数 cc 能够表示为两个整数的平方和,当且仅当 cc 的所有形如 4k+34k+3 的质因子的幂次...原创 2019-12-04 16:27:24 · 1744 阅读 · 1 评论 -
LeetCode刷题:三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。题解:由于题目中已经限定了数组的长度范围,所以不必考虑小于三的...原创 2019-12-03 20:25:22 · 724 阅读 · 0 评论 -
LeetCode刷题:范围求和 II
给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入: m =...原创 2019-12-02 12:15:26 · 188 阅读 · 0 评论 -
LeetCode刷题:完美数
对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14提示:输入的数字 n 不会超过 100,000,000. (1e8)题解:循环求和,结果判断时间和内存消耗为:代码为: cl...原创 2019-12-01 15:44:45 · 567 阅读 · 0 评论 -
LeetCode刷题:最小移动次数使数组元素相等
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]题解:每次使n-1个元素+1,可以理解为每次将未加1的...原创 2019-12-01 15:30:53 · 452 阅读 · 0 评论 -
LeetCode刷题:排列硬币
你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。给定一个数字 n,找出可形成完整阶梯行的总行数。n 是一个非负整数,并且在32位有符号整型的范围内。示例 1:n = 5硬币可排列成以下几行:¤¤ ¤¤ ¤因为第三行不完整,所以返回2.示例 2:n = 8硬币可排列成以下几行:¤¤ ¤¤ ¤ ¤¤ ¤因为第四行不完整...原创 2019-12-01 11:52:14 · 377 阅读 · 0 评论 -
LeetCode刷题:有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False题解:这道题最容易想到的解决方法是循环求解,如果i的平方等于num则return true,否则返回false。但是这种方法的时间复杂度高。...原创 2019-12-01 10:33:03 · 299 阅读 · 0 评论 -
LeetCode刷题:3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?题解:循环除三,不能整除则返回false。否则true。注意0时的特殊情况。时间和内存消耗为:代码...原创 2019-11-28 13:34:32 · 109 阅读 · 0 评论 -
LeetCode刷题:阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。题解:这道题求解的是尾数中零的个数,根据乘法规则我们知道,2的倍数与5的倍数相乘得到尾数为零的数字。这里还要考虑本身就含有...原创 2019-11-28 11:21:52 · 221 阅读 · 0 评论 -
LeetCode刷题:缺失数字
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?题解1:排序进行查找,如果缺失数字在中间,则return i,如果缺失数字在最后,则re...原创 2019-11-28 11:08:20 · 252 阅读 · 0 评论 -
LeetCode刷题:丑数
编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。输入不会超过 32 位有...原创 2019-11-27 23:18:32 · 118 阅读 · 0 评论 -
LeetCode刷题:各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?题解:这道题很适合递归,采取递归方法进行。时间和内存消耗为:代码为: class...原创 2019-11-27 17:24:34 · 394 阅读 · 0 评论 -
LeetCode刷题:计算质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。题解:如果是质数,那么它的倍数一定不是倍数,所以去掉这部分数字。时间和内存消耗为:代码为:class Solution { public int countPrimes(int n) { boolean[] ...原创 2019-11-27 16:15:55 · 327 阅读 · 0 评论 -
LeetCode刷题:2的幂次
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false题解:时间和内存消耗为:代码为:class Solution { public boolean isPowerOfTwo(int n)...原创 2019-11-26 22:58:34 · 177 阅读 · 0 评论 -
LeetCode刷题:快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 +02 = ...原创 2019-11-26 16:57:51 · 189 阅读 · 0 评论 -
LeetCode刷题: Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701题解:这道题和上一篇的类似,需要注意的就是...原创 2019-11-24 15:39:10 · 257 阅读 · 0 评论 -
LeetCode刷题:Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”题解:类比于十进制,将其看作二十六进制...原创 2019-11-24 15:00:19 · 109 阅读 · 0 评论