
LeetCode刷题
做过的LeetCode题目,记录一下自己的思路和解法。
杨小浩浩hh
计算机硕士在读,研究方向:机器学习。
展开
-
No.830 LeetCode题目 “较大分组的位置”
题目描述在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起始位置下标递增顺原创 2021-01-05 19:40:55 · 202 阅读 · 0 评论 -
No.861 LeetCode题目 “翻转矩阵后的得分”
题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。示例 :输入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]]输出:39解释:转换为 [[1,1,1,1],[1,0,0,1],[1,1,1,1]]0b1111 + 0b1001 + 0b1111 =原创 2020-12-07 18:49:25 · 181 阅读 · 0 评论 -
No.242 LeetCode题目 “有效的字母异位词”
题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明你可以假设字符串只包含小写字母。解题思路方法一:先判断两个字符长度是否相等,如果不相等则直接返回false。再将两个字符串排序,如果两个字符串排序之后相等,则两个字符串为有效的字母异位词。方法二:维护一个长度为26的数原创 2020-11-22 14:37:23 · 149 阅读 · 0 评论 -
No.147 LeetCode题目 “对链表进行插入排序”
题目描述对链表进行插入排序。从第一个元素开始,该链表可以被认为已经部分排序。每次迭代时,从输入数据中移除一个元素,并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入原创 2020-11-20 16:57:50 · 224 阅读 · 0 评论 -
No.283 LeetCode题目 “移动零”
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例 1:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1. 必须在原数组上操作,不能拷贝额外的数组。2. 尽量减少操作次数。解题思路遍历两遍即可;第一遍把非零元素交换到前面,并记录非零元素的个数;第二遍以非零元素的个数为下标,讲后面的元素都赋值0即可;时间复杂度:O(n)空间复杂的:O(1)(还有其他方法,比如维护两个指针等等,应该是只需遍历一遍即可原创 2020-11-20 16:44:07 · 240 阅读 · 5 评论 -
No.1030 LeetCode题目 “距离顺序排列矩阵单元格”
题目描述给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1)和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)示例 1:输入:R = 1, C =原创 2020-11-17 20:55:08 · 120 阅读 · 0 评论 -
No.922 LeetCode题目 “按奇偶排序数组” II
题目描述给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例 1:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <= 10原创 2020-11-14 11:14:33 · 158 阅读 · 0 评论 -
No.328 LeetCode题目 “奇偶链表”
题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-&原创 2020-11-14 11:03:53 · 123 阅读 · 0 评论 -
No.1122 LeetCode题目 “数组的相对排序”
题目描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例 1:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:arr1.length, arr原创 2020-11-14 10:50:01 · 215 阅读 · 0 评论 -
No.1300 LeetCode题目 “转变数组后最接近目标值的数组和”
题目描述给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这原创 2020-06-28 14:16:18 · 163 阅读 · 0 评论 -
No.990 LeetCode题目 “等式方程的可满足性”
文章目录题目描述解题思路具体代码性能结果题目描述给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方原创 2020-06-08 22:34:03 · 247 阅读 · 0 评论 -
No.126 LeetCode题目 “成语接龙II”
首先透露一下,本人在2018年参加南京大学本科生开放日(保研夏令营)的机试时,此题目为三道机试题中的一题,十个测试样例,看你AC了几个样例。当时基本没怎么准备,看到题目时一脸懵,今天竟然又让我在LeetCode上碰到了。文章目录题目描述解题思路具体代码性能结果题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的原创 2020-06-07 15:47:42 · 618 阅读 · 0 评论 -
No.128 LeetCode题目 “最长连续序列”
文章目录题目描述解题思路完整代码性能结果题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。解题思路本题要求时间为O(n),即扫描一遍就需要得出结果。可以采用哈希表的原理,采用unorded_set即可,按照以下步骤计算:将nums中的数据放入set中;对于nums中的每个数nums[i],若nums[i]-原创 2020-06-06 21:57:28 · 193 阅读 · 0 评论 -
面试题.29 LeetCode题目 “顺时针打印矩阵”
本题与No.54 LeetCode题目 “螺旋矩阵”相同。题目描述给定一个包含 m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,原创 2020-06-05 10:58:58 · 639 阅读 · 0 评论 -
No.238 LeetCode题目 “除自身以外数组的乘积”
文章目录题目描述解题思路一、空间复杂度O(n)二、空间复杂度O(n)具体代码性能结果题目描述给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此原创 2020-06-04 09:56:37 · 273 阅读 · 2 评论 -
No.837 LeetCode题目 “新21点”
文章目录题目描述解题思路完整代码性能结果个人感悟题目描述爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以0分开始,并在她的得分少于 K分时抽取数字。 抽取时,她从[1, W]的范围中随机获得一个整数作为分数进行累计,其中W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于K分时,她就停止抽取数字。 爱丽丝的分数不超过N 的概率是多少?示例 1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。原创 2020-06-03 22:09:29 · 923 阅读 · 0 评论 -
面试题.64 LeetCode题目 “求1 +2 +...+n”
面试小白的我深深地发出了疑问,面试的时候真的会有这样的题吗…文章目录题目描述解题思路1. 等差数列求和2. 利用递归求解完整代码性能结果题目描述求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000解题思路1. 等差数列求和首先可以想到利用n * (n + 1) / 2原创 2020-06-02 10:33:37 · 408 阅读 · 3 评论 -
No.160 LeetCode题目 “相交链表”
文章目录题目描述解题思路具体代码性能结果题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A原创 2020-06-01 13:18:20 · 301 阅读 · 0 评论 -
No.1431 LeetCode题目 “拥有最多糖果的孩子”
首先祝大家儿童节快乐!!文章目录题目描述解题思路具体代码性能结果题目描述给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,tru原创 2020-06-01 10:29:43 · 439 阅读 · 2 评论 -
No.101 LeetCode题目 “对称二叉树”
文章目录题目描述解题思路完整代码性能结果题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:解题思路本题要求判断树是否为对称二叉树,主要思想就是利用递归实现,最后返回结果。新建一个函数compare(root, root),将根结点两次传递进去,判断:两棵树的根节点的val值是否相等;以第一棵树的左节点为根结点的子树是否与以第二棵树的右节点为根结点的子树完全原创 2020-05-31 23:36:20 · 221 阅读 · 0 评论 -
No.84 LeetCode题目 “柱状图中的最大矩形”
文章目录题目描述本题要点解题思路1. 暴力破解2.利用单调栈完整代码性能结果题目描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10本题要点需要用一个单调栈来解决 —— 空间换时间。进栈的元素原创 2020-05-30 17:04:02 · 306 阅读 · 0 评论 -
No.194 LeetCode题目 “打家劫舍”
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例原创 2020-05-29 10:38:43 · 855 阅读 · 0 评论 -
No.394 LeetCode题目 “字符串解码”
文章目录题目描述解题思路具体代码性能结果今天LeetCode的每日一题,用了两个多小时解出来的,虽然题目看似简单,但是要考虑的东西还是挺多的。话不多说,先看题目描述:题目描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有原创 2020-05-28 17:45:28 · 484 阅读 · 0 评论 -
No.974 Leetcode题目 “和可被 K 整除的子数组”
题目描述原创 2020-05-27 23:33:42 · 1077 阅读 · 2 评论 -
No.287 Leetcode题目 “寻找重复数”
题目描述给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。...原创 2020-05-26 13:33:45 · 333 阅读 · 0 评论 -
No.1 Leetcode题目 “两数之和”
题目描述:解题方法:一、暴力破解直接利用双重循环,判断数组中nums[i] + nums[j] 是否等于 target 即可。代码如下:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int length = nums.size(); for(int i = 0; i < length-1; i++){原创 2020-05-12 11:27:33 · 851 阅读 · 0 评论 -
如何查看已解决的LeetCode题目列表
作为一个刷题网站,LeetCode上包含了很多题目,同时也有很多分类,比如:算法、数据库、多线程等等。很多程序员朋友选择在LeetCode上刷题。然而,在准备面试或者笔试之前,我们有时需要再温习一下自己做过的题目,本篇博文就来介绍一下如何查看已解决的题目列表。按照以下步骤执行即可:一、首先随便点开一道题目,比如题目1“两数之和”。二、进入任意题目后点击左下角“题目列表”三、在这个界面筛选题目,选择已解答的题目即可。以上就是查看已解决的LeetCode题目列表的方法了。...原创 2020-05-12 11:12:56 · 11053 阅读 · 0 评论