自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 收藏
  • 关注

原创 LeetCode算法题目录151-200

151.翻转字符串里的单词 19.8% 中等152. 乘积最大子序列 32.0% 中等153. 寻找旋转排序数组中的最小值 48.1% 中等154. 寻找旋转排序数组中的最小值 II 45.2% 困难155. 最小栈 47.6% 简单160. 相交链表 36.5% 简单162. 寻找峰值 39.2% 中等164. ...

2019-03-05 15:41:18 355

原创 LeetCode算法题目录101-150

101. 对称二叉树 45.2% 简单102. 二叉树的层次遍历 53.6% 中等103. 二叉树的锯齿形层次遍历 46.8% 中等104. 二叉树的最大深度 67.2% 简单105. 从前序与中序遍历序列构造二叉树 55.9% 中等106. 从中序与后序遍历序列构造二叉树 58.1% 中等107. 二叉树的层次遍历 II ...

2019-03-05 15:23:05 390

原创 LeetCode算法题目录51-100

题名 解答 通过率 难度N皇后 59.1% 困难N皇后 II 70.1% 困难53. 最大子序和 42.7% 简单54. 螺旋矩阵 33.9% 中等55. 跳跃游戏 33.5% 中等56. 合并区间 34.7% 中等插入区间 33.4% 困难58. 最后一个单词的长度 28.8% 简单59. 螺旋矩...

2019-03-05 15:09:35 348

原创 LeetCode算法题目录1-50

1. 两数之和 44.9% 简单2. 两数相加 32.8% 中等3. 无重复字符的最长子串 28.3% 中等4. 寻找两个有序数组的中位数 33.7% 困难5. 最长回文子串 24.6% 中等6. Z 字形变换 40.8% 中等7. 整数反转 31.7% 简单8. 字符串转换整数 (atoi) 16.5%...

2019-03-05 14:56:45 401

原创 LeetCode算法题200:岛屿的个数解析

给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3这个题还是用DFS进行遍历,遇到1且没有遍历过就搜...

2019-03-05 10:10:34 970

原创 LeetCode算法题199:二叉树的右视图解析

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---这个题一开始想的很简单,想着只要...

2019-03-05 09:28:21 576

原创 LeetCode算法题187:重复的DNA序列解析

所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。示例:输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出: ["AAAAACCCCC", "CCCCCAA...

2019-03-05 09:08:55 1136

原创 LeetCode算法题179:最大数解析

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。这个题需要自定义一个排序方法,因为以字符串的形式组合两个数,前后不同组合的数不同,哪个大就用哪个顺序,然后这样对数组排序,最后组合即可,要注意的是...

2019-03-04 14:16:34 742

原创 LeetCod算法题173:二叉搜索树迭代器解析

实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); // 返回 true...

2019-03-04 11:06:54 261

原创 LeetCode算法题162:寻找峰值解析

峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 ...

2019-03-04 09:42:41 496

原创 LeetCode算法题153:寻找旋转排序数组中的最小值解析

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0二分法查找,旋转后的序列必然是两个升序数列,所以如果中间值大于左边...

2019-03-04 08:59:42 230

原创 LeetCode算法题152:乘积最大子序列解析

给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。这个题和最大子序和有些类似,但是这个题更复杂一些,包含了负数,所以不仅需要存储最大值,还需...

2019-03-04 08:27:42 649

原创 LeetCode算法题150:逆波兰表达式求值解析

根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例 2:...

2019-03-03 11:16:38 356

原创 LeetCode算法题148:排序链表解析

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5这个题需要用到归并排序,归并排序有两个过程,一个是把序列分开,一个是把序列合

2019-03-02 22:39:58 416

原创 LeetCode算法题147:对链表进行插入排序解析

对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到...

2019-03-02 17:13:57 319 1

原创 LeetCode算法题144:二叉树的前序遍历解析

给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?C++用递归,python用迭代,迭代使用栈。C++源代码:/** * Definition for a binary tree node. * struct Tre...

2019-03-02 14:58:07 260

原创 LeetCode算法题143:重排链表解析

给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1...

2019-03-02 14:42:14 465

原创 LeetCode算法题142:环形链表 II解析

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:...

2019-03-01 22:41:01 238

原创 LeedCode算法题138:复制带随机指针的链表解析

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random&qu

2019-03-01 20:50:25 190

原创 LeetCode算法题137:只出现一次的数字 II解析

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99这个题比之前136题只出现一次的数字要难很多,那个题是利用异或消除掉偶数次的数字,这个题更复杂一...

2019-03-01 17:51:05 375

原创 LeetCode算法题134:加油站解析

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为...

2019-03-01 16:51:03 649

原创 LeetCode算法题133:克隆图解析

给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。示例:输入:{"$id":"1","neighbors":[{"$id":"2","neighbors":[{"$ref":"1"},{"$id":"3",&q

2019-03-01 12:38:02 841

原创 LeetCode算法题131:分割回文串解析

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]这个题还是用DFS的方法来做,基本思路就是寻找子串的思路,只需要加一个函数来判断是否是回文串即可。C++源代码:class Solution {public: vector

2019-03-01 11:05:23 1076

原创 LeetCode算法题130:被围绕的区域解析

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X...

2019-02-28 09:24:08 1322

原创 LeetCode算法题129:求根到叶子节点数字之和解析

给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 1...

2019-02-27 22:11:25 420

原创 LeetCode算法题127:单词接龙解析

给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:1.每次转换只能改变一个字母。2.转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 ...

2019-02-27 21:47:02 1463

原创 LeetCode算法题120:三角形最小路径和解析

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。这个题需要用...

2019-02-27 10:19:20 590

原创 LeetCode算法题117:填充每个节点的下一个右侧节点指针 II解析

给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{"$id":"1","left":{"$id":"2",".

2019-02-27 09:24:11 1292 1

原创 LeetCode算法题116:填充每个节点的下一个右侧节点指针解析

示例:输入:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":nu

2019-02-27 08:34:40 907

原创 LeetCode算法题114:二叉树展开为链表解析

给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6这个题的思路是直接把左子树插入到根节点与右子树之间,可以用迭代来做。C++源代码:/**...

2019-02-26 14:44:58 286

原创 LeetCode算法题113:路径总和 II解析

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ /...

2019-02-26 14:15:16 327

原创 LeetCode算法题109:有序链表转换二叉搜索树解析

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9...

2019-02-26 11:20:21 368

原创 LeetCode算法题106:从中序与后序遍历序列构造二叉树解析

根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7这个题和上一个题从前序遍历与中序遍历序列构造二叉树思路完全一样。C++源代码:...

2019-02-26 10:19:04 533

原创 LeetCode算法题105:从前序与中序遍历序列构造二叉树解析

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7这个题想通了就不难了,前序遍历的第一个一定是根节点,然后在中序遍历中找到这个节点,...

2019-02-26 09:17:25 158

原创 LeetCode算法题103:二叉树的锯齿形层次遍历解析

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]这个题目与普通的层次遍历思想没有多大区...

2019-02-25 09:45:23 784

原创 LeetCode算法题98:验证二叉搜索树解析

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: ...

2019-02-25 08:55:29 291

原创 LetCode算法题96:不同的二叉搜索树解析

给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / ...

2019-02-25 07:40:56 186

原创 LeetCode算法题94:二叉树的中序遍历解析

给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?递归法直接从左向右添加元素即可,C++程序使用递归法。迭代法用到了栈,先从根结点开始保存所有的左节点到栈中,然后以此从栈顶推出节点,然后保存节点值,将节点再指向其右节点进行循环。C...

2019-02-21 09:29:21 215

原创 LeetCode算法题92:反转链表 II解析

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL这个题和206题反转链表思路是一样的,这个题就不用递归了,直接找到开始反转的前一个,然后遍历n-m次链表...

2019-02-21 08:26:07 365

原创 LeetCode算法题90:子集 II解析

给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]这个题与78题子集的解题思路基本一致,这里的数组可以包含重复元素,所以第一种集合添加元素扩充的方法需要添加约束,之前是遇到新元素所有的原来的...

2019-02-20 21:51:54 404

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除