自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣解题思路:124. 二叉树中的最大路径和 纠错记录

124. 二叉树中的最大路径和思路:给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。输入:[-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出:42这一题我又写错了ε(┬┬﹏┬┬)3,先贴一下我的错误答案:int max = Integer.MIN_VALUE;publi

2020-10-28 10:54:45 97

原创 力扣解题思路:自定义迭代器

116. 填充每个节点的下一个右侧节点指针思路:题目请点这里~如果没有限制只能使用常数级空间,那么层次遍历是个很好的选择。但是这里无法使用BFS,所以可以采用递归,题目中比较重要的一点是,这棵树是完全二叉树,大家也一定听说过这种树,堆排序中用的就是这种二叉树。递归过程中比较重要的一点就是,首先我们每颗子树都要将其左节点的next指向右节点,同时此时的右节点的next还需要指向旁边那颗子树的左节点,我们如何获得这个左节点呢?在每一层的时候把下一层的next连好。 等到了下一层,由于上一层的next已经连

2020-10-27 10:41:49 112

原创 力扣解题思路:115. 不同的子序列 纠错记录

115. 不同的子序列思路:给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。输入:S = "rabbbit", T = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 S 中得到 "rabbit" 的方案。(上箭头符号 ^ 表示选取

2020-10-27 09:40:26 134

原创 力扣解题思路:97. 交错字符串

97. 交错字符串思路:给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true看到这一题的第一反应就是用dfs,但是这样会超时,不过我们知道,一般使用dfs能解决的,动态规划也可以解决。根据这个大佬的思路,我们可以将问题简化为一个矩阵寻找路径的问题,即从左上角到右下角是否存在一条路径的问题,并且只能选择向下和向右走。显然我们需要一个二维数组,定义 b

2020-10-23 10:06:12 214

原创 力扣解题思路:96. 不同的二叉搜索树

96. 不同的二叉搜索树思路:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?这一题和95. 不同的二叉搜索树 II是一样的,不过这一题求的是个数,不用全部列举出来,理论上是可以使用上一题的代码稍加修改的:public int numTrees(int n) { if (n < 1) { return 0; } return generateSubtrees(1, n).size();}private List<TreeNode&g

2020-10-22 10:39:07 74

原创 力扣解题思路:84. 柱状图中最大的矩形

84. 柱状图中最大的矩形思路:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。可以看这里的图。这一题最直观的方式就是暴力法,对于每个柱体,向其左右延申,直到找到第一个比它矮的柱体:public int largestRectangleArea(int[] heights) { int area = 0, n = heights.length; // 遍历每个柱子,以当前柱子的高度作为矩形的高 h,

2020-10-21 09:24:08 178

原创 力扣解题思路:76. 最小覆盖子串 纠错记录

76. 最小覆盖子串思路:给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。输入:S = "ADOBECODEBANC", T = "ABC"输出:"BANC"这一题可以采用双指针,right指针不断向右移动,直到框住满足条件的字符串,然后这时候移动left指针缩小框住的范围即可,直到right遍历完所有字符串。所以这一题关键的一点是如何判断框住的字符串是满足条件的,这里我采用的是两个哈希表,其实也可以使用

2020-10-19 09:43:18 95

原创 力扣解题思路:71. 简化路径

71. 简化路径思路:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最

2020-10-18 10:00:11 295

原创 力扣解题思路:56. 合并区间 纠错记录

合并区间 纠错记录思路:给出一个区间的集合,请合并所有重叠的区间。输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].有了之前的经验(区间排序问题)我就自然而然的想到先排序,那么又会面临一个问题,是按照区间左边还是右边排序呢?之前做过的题目一般都是按照右边排序,那么这次我也按照右边排序吧,使用left和right来维护所合并的区间,动态

2020-10-15 11:03:27 140

原创 力扣解题思路:跳跃游戏 纠错记录

45. 跳跃游戏 II思路:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。首先能想到的是动态规划(超时):public int jump(int[] nums) { if (nums == null || nums.length == 0) { return 0; } //if(nums[0] == 25000) return 2; int[] dp

2020-10-14 09:46:56 168

原创 力扣解题思路:42. 接雨水/11. 盛最多水的容器

42. 接雨水思路:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。可以看这里的图。这一题是有规律的,就比如,如果每一格有雨水,那证明其左右肯定有更高的柱子,并且其水面的高度一定是左右最高值的最小值。记录每个柱子左右最高高度,第一个和最后一个柱子没法接水,所以只用计算1到n-2即可: for (int i = 1; i < n; i++) { left[i] = Math.max(left[i - 1], height[i - 1]);

2020-10-12 10:15:17 191

原创 力扣解题思路:32. 最长有效括号 纠错记录

32. 最长有效括号思路:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。输入: "(()"输出: 2解释: 最长有效括号子串为 "()"输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"这一题和22. 括号生成类似,首先想到的是用栈来解决,先看一下我的错误代码:int count = 0;Stack<Integer> stack = new Stack<>();for(int i=0;i<s.l

2020-10-10 14:59:21 105

原创 力扣解题思路:31. 下一个排列

31. 下一个排列思路:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1先来观察一个例子【76958643】这个数,我们要找下一个大的数,首先我们能想到的肯定是从右边下手,因为要求是下一个最大的数,可以看到,从右边开始看这

2020-10-09 18:47:04 165

原创 力扣解题思路:22. 括号生成 纠错记录

15. 三数之和思路:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]这一题我犯的最大的错就是把这个括号匹配概念弄复杂了,因为只有一种类型的括号,我们只需要考虑两点即可满足规则,首先左括号要在右括号之前,其次,左括号和右括号数量一致,只要满足这两点即可

2020-10-03 09:55:43 118 1

空空如也

空空如也

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

TA关注的人

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