fFee-ops's Blog
301. 删除无效的括号(高频题) 301. 删除无效的括号(高频题)
301. 删除无效的括号 解题思路 代码 解题思路要用回溯算法,一刷2021/3/19,没有完全弄明白 最开始看到题目要求删除最小括号数目,我想的是dp,但是最后它要你返回的又是字符串的组合,所以就要回溯。整体思路比较简单: 统
2021-03-19
283. 移动零(高频题) 283. 移动零(高频题)
283. 移动零 解题思路 代码 解题思路很简单的双指针,每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。 代码class Solution { public void moveZeroes(int
2021-03-19
221. 最大正方形(高频题) 221. 最大正方形(高频题)
221. 最大正方形 解题思路 代码 解题思路一看求最大面积,而且感觉后一步和前一步之间还有联系,并且问题规模可以很大,直接动态规划。 题解见这里 代码class Solution { public int maximalSq
2021-03-19
207. 课程表(高频题) 207. 课程表(高频题)
207. 课程表 解题思路 代码 解题思路这种有先决顺序的工程安排问题一般就是_拓扑排序_,这道题是拓扑排序的裸题。 拓扑排序其实一般就利用Map把拓扑图构建出来,然后用BFS去遍历拓扑图就好了。 则本题的大概思路为: 统计每个课
2021-03-19
152. 乘积最大子数组(高频题) 152. 乘积最大子数组(高频题)
152. 乘积最大子数组 解题思路 代码 解题思路本题要用动态规划,主要思路如下 代码class Solution { public int maxProduct(int[] nums) { int n = n
2021-03-19
148. 排序链表(高频题) 148. 排序链表(高频题)
148. 排序链表 解题思路 代码 解题思路这题想到要排序,是链表。用快慢指针,还需要扩展一下,归并排序。但是要注意,这里的归并排序和 给数组归并排序有一丢丢的不同,因为这个链表不支持随机访问 代码/** * Definition
2021-03-19
139. 单词拆分(高频题) 139. 单词拆分(高频题)
139. 单词拆分 解题思路 代码 解题思路本题用动态规划,dp[i]表示s前i个字符能否拆分转移方程:dp[i] = dp[j] && check(s[j+1, i]); 代码class Solution {
2021-03-18
128. 最长连续序列(高频题) 128. 最长连续序列(高频题)
128. 最长连续序列 解题思路 代码 解题思路 对于数组nums,其可能有多个数字连续的序列,其中每个序列都会有一个左边界,例如示例1的结果中[1, 2, 3, 4]的左边界就为1。 如果我们知道了每一个连续序列的左边界,并且知
2021-03-18
124. 二叉树中的最大路径和(高频题) 124. 二叉树中的最大路径和(高频题)
124. 二叉树中的最大路径和 解题思路 代码 解题思路见这篇题解 代码/** * Definition for a binary tree node. * public class TreeNode { * int v
2021-03-18
114. 二叉树展开为链表(高频题) 114. 二叉树展开为链表(高频题)
114. 二叉树展开为链表 解题思路 代码 解题思路用后序遍历,把左子树接到根节点上,再把原来的右子树接到现在的右子树上,然后把原来的左子树置为null。 虽然是后序遍历,但是连接起来成链表,就是前序遍历的结果 代码/** * De
2021-03-18
105. 从前序与中序遍历序列构造二叉树(高频题) 105. 从前序与中序遍历序列构造二叉树(高频题)
105. 从前序与中序遍历序列构造二叉树 解题思路 代码 解题思路和剑指offer第七题一样 代码/** * Definition for a binary tree node. * public class TreeNode {
2021-03-18
102. 二叉树的层序遍历(高频题) 102. 二叉树的层序遍历(高频题)
102. 二叉树的层序遍历 解题思路 代码 解题思路没啥说的,题目都告诉你要用层级遍历了,也就是BFS。 代码/** * Definition for a binary tree node. * public class Tree
2021-03-18
2 / 21