![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode刷题专栏
灯会_hust
I am a graduate student in pattern recognition.My research interests are in computer vision and deep learning.
展开
-
解答如何刷leetcode--------方法决定你的效率
解答如何刷leetcode--------方法决定你的效率在看了一些知乎和牛客上的帖子以及《王道程序员面试宝典》,我确定了我的刷题方法,就是分知识点,按难易程度开始刷。下面分享一些我看到的刷题攻略:1.按照下面的tag刷起来挺好的。比如复习链表的内容,就选Linked List这部分的23个题目。刷完之后可以再总结一下常用的方法和数据结构构造方式。—tag的顺序我是按《王道》里面的顺序(附...原创 2019-10-24 21:08:30 · 1116 阅读 · 12 评论 -
LeetCode刷题(二十二)-----树-------medium部分(Java、C++)
102. 二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。(即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]思路一:如何遍历一棵树有两种通用的遍历树的策略:深度优先搜索(DFS)在这个策略中,我们采用深度作为优先级,以便从根开始一直到达某个确定的叶子...原创 2020-01-06 20:10:50 · 241 阅读 · 0 评论 -
LeetCode刷题(二十一)-----树-------easy部分(Java、C++)
104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度3。思路一:C++的三种方法实现(有注解)递归、栈循环实现深度优先遍历;用队列循环实现层遍历。借鉴了伊利亚·穆罗梅茨的代码。/** * De...原创 2020-01-06 19:45:30 · 254 阅读 · 0 评论 -
LeetCode刷题(二十)-----栈(Java、C++)
155. 最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack....原创 2019-12-30 23:18:52 · 275 阅读 · 0 评论 -
LeetCode刷题(十九)-----链表-------medium部分(Java、C++)
138. 复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。 示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …:"1","next":{"id”:“2”,“next”:null,“random”:{“KaT...原创 2019-12-30 23:04:57 · 272 阅读 · 0 评论 -
LeetCode刷题(十八)-----链表-------medium部分(Java、C++)
148. 排序链表在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路一:排序链表-bottom-to-up O(1) 空间由于题...原创 2019-12-30 22:19:52 · 247 阅读 · 0 评论 -
LeetCode刷题(十七)-----链表-------easy部分(Java、C++)
160. 相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 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输入解释:相交节点...原创 2019-12-30 22:08:48 · 381 阅读 · 0 评论 -
LeetCode刷题(十六)-----链表-------easy部分(Java、C++)
237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -&...原创 2019-12-30 21:45:03 · 308 阅读 · 0 评论 -
LeetCode刷题(十五)-----字符串-------medium部分(Java、C++)
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的...原创 2019-12-16 10:24:17 · 364 阅读 · 0 评论 -
LeetCode刷题(十四)-----字符串-------medium部分(Java、C++)
22. 括号生成给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路一:c++版本,暴力构造法+剪枝构造法生成括号首先分析:需要构造有效的括号,数量上,左右括号分别都为n个。其次:左括号的数量需要大于等于右括号的...原创 2019-12-16 10:00:26 · 316 阅读 · 0 评论 -
LeetCode刷题(十三)-----字符串-------easy部分(Java、C++)
125. 验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路一:解法一:class Solution {public: b...原创 2019-12-16 09:39:47 · 311 阅读 · 0 评论 -
LeetCode刷题(十二)-----字符串-------easy部分(Java、C++)
LeetCode刷题(十二)-----字符串-------easy部分(Java、C++)344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[...原创 2019-12-16 09:27:01 · 271 阅读 · 0 评论 -
LeetCode刷题(十一)-----数组-------medium部分(Java、C++)
LeetCode刷题(十一)-----数组-------medium部分(Java、C++)162. 寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组nums,其中nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1] = nums[n] = -∞。示例 1:输入:...原创 2019-12-11 14:25:07 · 416 阅读 · 0 评论 -
LeetCode刷题(十)----数组-----medium部分(Java、C++)
LeetCode刷题(十)-----数组-------medium部分(Java、C++)238. 除自身以外数组的乘积给定长度为n的整数数组nums,其中n>1,返回输出数组output,其中output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明:请不要使用除法,且在O(n)时间复杂度内完成此题...原创 2019-12-11 11:21:14 · 627 阅读 · 0 评论 -
LeetCode刷题(九)-----数组-------medium部分(Java、C++)
LeetCode刷题(九)-----数组-------medium部分(Java、C++)78.子集 给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。示例:思路一:一、迭代一种思路,对于[1,2,3], 初始化:res=[]遇到1:[1] res:[[],[1]]遇到2:[2] [1,2] res:[[],...原创 2019-12-03 11:41:35 · 255 阅读 · 0 评论 -
LeetCode刷题(八)-----数组-------easy部分(Java、C++)
LeetCode刷题(八)-----数组-------easy部分(Java、C++)414. 第三大的数给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。思路一:方法1:用set,代码简单但是好慢思路二:遍历数组维护最大的三个数。基本思路:遍历数组:如果比第一个数大,第一第二移动到第二第三,更新第一。如果比第二...原创 2019-12-02 23:19:42 · 179 阅读 · 0 评论 -
LeetCode刷题(七)-----数组-------easy部分(Java、C++)
LeetCode刷题(七)-----数组-------easy部分(Java、C++)219. 存在重复元素 II给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums[i]=nums[j],并且i和j的差的绝对值最大为k。示例1:示例2:示例3:思路一:方法一 (线性搜索) 【超时】思路:将每个元素与它之前的k个元素中比较查看它们是否相等。算...原创 2019-11-18 20:38:11 · 526 阅读 · 0 评论 -
LeetCode刷题(六)-----数组-------easy部分(Java、C++)
LeetCode刷题(六)-----数组-------easy部分(Java、C++)189. 旋转数组给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。说明:• 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。• 要求使用空间复杂度为O(1)的原地算法。这题直接将尾部元素插入到数组的头部这种做法会超时。思路一:方法 1:暴力最简单的方法是旋转 k...原创 2019-11-13 16:43:39 · 269 阅读 · 0 评论 -
LeetCode刷题(五)-----数组-------easy部分(Java、C++)
LeetCode刷题(五)-----数组-------easy部分(Java、C++)167. 两数之和 II - 输入有序数组给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1和index2,其中index1必须小于index2。说明:• 返回的下标值(index1 和 index2)不是从零开始的。• 你可以假设每个输入只...原创 2019-11-05 09:38:38 · 546 阅读 · 0 评论 -
LeetCode刷题(四)-----数组-------easy部分(Java、C++)
LeetCode刷题(四)-----数组-------easy部分(Java、C++)121. 买卖股票的最佳时机给定一个数组,它的第i个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。思路1:方法一:暴力枚举使用两个变量i和j,它们分别表示买进这支股票和卖出这支股票...原创 2019-11-01 19:53:42 · 390 阅读 · 0 评论 -
LeetCode刷题(三)-----数组-------easy部分(Java、C++)
LeetCode刷题(三)-----数组-------easy部分(88、118题)88.合并两个有序数组给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。思路一:标签:从后向前...原创 2019-10-27 22:15:58 · 205 阅读 · 0 评论 -
LeetCode刷题(二)-----数组-------easy部分
LeetCode刷题(二)-----数组-------easy部分66.加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。思路分析:此题不难,其实就是让我们模拟竖式计算进位,然只需要加11即可。对此,我们将问题分成以下3类:给定整数中最后一位不是数字9...原创 2019-10-25 15:08:35 · 145 阅读 · 0 评论 -
LeetCode刷题(一)-----数组-------easy部分
LeetCode刷题(一)-----数组-------easy部分1.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。数组长度:nums.lengthnums.size() 获取向量元素个数;题解:方法一:暴力法—暴力枚举暴力法很简单,遍历每个元素 xx,并查找是否存在一个值与 target - x...原创 2019-10-24 21:34:52 · 542 阅读 · 0 评论