自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [树遍历的应用] 226. 翻转二叉树(递归DFS、迭代BFS)

[树遍历的应用] 226. 翻转二叉树(递归DFS、迭代BFS)226. 翻转二叉树思路1:递归(DFS)实现遇到的问题:特殊用例的处理思路2:迭代(BFS)226. 翻转二叉树题目链接:https://leetcode-cn.com/problems/invert-binary-tree/分类:树(翻转二叉树、树的遍历:递归DFS,迭代BFS + 在遍历过程中翻转)思路1:递归(DFS)算法流程:鲁棒性验证,快速处理边界用例创建backup节点用于存放根节点,用于返回镜像

2020-09-30 18:29:37 156

原创 [设计] 225. 用队列实现栈(两个队列法、一个队列法)

[设计] 225. 用队列实现栈(两个队列法、一个队列法)225. 用队列实现栈思路1:两个队列思路2:一个队列225. 用队列实现栈题目链接:https://leetcode-cn.com/problems/implement-stack-using-queues/分类:设计:用队列模拟栈的四个操作(push,pop,top,empty)队列:只能使用队列的基本操作模拟栈、方法有:两个队列法、一个队列法。思路1:两个队列队列的特点是先进先出,栈的特点是先进后出,要用队列来模拟栈,可

2020-09-30 17:52:15 92

原创 [栈 字符串] 224. 基本计算器(栈的应用:符号栈+数字栈+出入栈规则、字符串解析) 227.基本计算器 II(出入栈规则、字符串解析)

[栈 字符串] 224. 基本计算器(栈的应用:符号栈+数字栈+出入栈规则、字符串解析)224. 基本计算器思路:栈 + 字符串解析实现遇到的问题:数字截取问题224. 基本计算器题目链接:https://leetcode-cn.com/problems/basic-calculator/分类:栈(开辟符号栈、数字栈,设计出入栈规则,实现带括号的加减法)数学/字符串(分析+实现基本计算器的功能,实质上是对字符串的解析:对数字、括号字符、加减法号的提取)思路:栈 + 字符串解析开辟两个

2020-09-30 16:54:46 595

原创 [树 数学] 222. 完全二叉树的节点个数(遍历统计个数 → 利用完美二叉树特点统计个数)

[树 递归] 222. 完全二叉树的节点个数(利用完美二叉树的特点统计个数)222. 完全二叉树的节点个数思路1:直接递归思路2:利用完美二叉树的特点222. 完全二叉树的节点个数题目链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/分类:树(遍历、完美二叉树:计算高度、统计节点个数)递归(利用完美二叉树特点寻找满二叉子树,递归处理另一棵子树)思路1:直接递归递归统计节点总数,思路简单,但是没有用到完美二叉树的

2020-09-30 13:53:05 178

原创 [排序 Set] 217. 219. 220 存在重复元素 I II III(哈希表、Set模拟滑动窗口、TreeSet、桶排序)

[排序 Set] 217. 219. 220 存在重复元素 I II III(哈希表、Set模拟滑动窗口、TreeSet、桶排序)217. 存在重复元素题目分析思路1:排序 + 遍历思路2:Set219. 存在重复元素 II题目分析思路1:哈希表思路2:利用set构建滑动窗口(思路更巧妙)220. 存在重复元素 III题目分析思路1:暴力解实现遇到的问题:字面量溢出问题思路2:TreeSet + 另一种角度寻找|差值|<=t的元素 (推荐)实现遇到的问题:TreeSet存放的是包装类思路3:桶排序(推

2020-09-30 00:01:40 123

原创 [字符串匹配]214. 最短回文串 (暴力解 → RK算法 → KMP算法)

[字符串匹配]214. 最短回文串 (暴力解 → RK算法 → KMP算法)214. 最短回文串题目分析思路1-1:暴力解(自己的最初想法)实现遇到的问题:各种查缺补漏思路1-2 思路简化的暴力解思路2:s和反转s做equals寻找最大回文子串(思路3\4优化的基础)实现遇到的问题:reverse会修改原sb思路3:RK算法(字符串哈希法)实现遇到的问题:字面量溢出问题思路4:KMP算法214. 最短回文串题目链接分类:字符串(寻找以第0个字符为开头的最长回文子串)字符串匹配算法(equals

2020-09-26 23:00:34 911 1

原创 [排序 手写堆 快排模板] 215. 数组中的第K个最大元素(堆排序、快速排序)

[排序 手写堆 快排模板] 215. 数组中的第K个最大元素(堆排序、快速排序 + 分治)215. 数组中的第K个最大元素题目分析思路1:Arrays.sort思路2:堆排序(适合大数据量)使用PriorityQueue(小顶堆(大小=k) + 大于顶部的入堆)手写堆(小顶堆(大小=n) + 全部元素入堆 + 弹出n-k次顶部)手写堆(小顶堆(大小=k) + 大于顶部的入堆)思路3:利用快排partition实现分治(速度最快)算法流程:降序快排 + 分治一轮降序快排(实现partition函数)根据par

2020-09-24 21:31:43 175

原创 [动态规划] 198. 打家劫舍 213. 打家劫舍 II(时间空间优化)

[动态规划] 198. 打家劫舍 213. 打家劫舍 II198.打家劫舍(基础题)题目分析思路:动态规划213. 打家劫舍 II(首尾认为是相邻的)题目分析思路1:动态规划 + 一趟遍历思路2:动态规划 两趟遍历(更简单,推荐)198.打家劫舍(基础题)题目链接:https://leetcode-cn.com/problems/house-robber/分类:动态规划题目分析这题简单来说,就是从数组中选择出的一定数量的元素,同时这些元素不能是相邻元素,要求找出满足条件的元素之和的最大值。

2020-09-23 18:55:32 199

原创 [滑动窗口 二分查找] 209. 长度最小的子数组(暴力解 → 滑动窗口法 → 二分查找法)

[滑动窗口 二分查找] 209. 长度最小的子数组(暴力解 → 滑动窗口法 → 二分查找法)209. 长度最小的子数组思路1:暴力解(O(N^2))思路2:滑动窗口法(O(N),推荐)算法流程思路3:二分查找 (NlogN,思路转变)209. 长度最小的子数组题目链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/分类:数组(无序数组)滑动窗口(思路2:O(N) 寻找连续子数组)二分查找(思路3:用 无序数组nums 构

2020-09-22 19:50:04 162

原创 [设计数据结构] 208. 实现前缀树Trie(节点:Trie类/边:类内数组、终结点区分单词和前缀)211. 添加与搜索单词(前缀树的应用)212. 单词搜索 II(回溯法 + 前缀树)

[设计数据结构] 208. 实现前缀树Trie(节点:Trie类/边:类内数组、终结点区分树内的单词和前缀)208. 实现 Trie (前缀树)题目分析什么是前缀树?前缀树基本函数的实现要求算法设计1、设计节点和边的数据结构2、设计三个功能函数insert(word)search(word):(依赖终结点)startsWith(prefix)实现遇到的问题1、如何创建前缀树的根节点root?(在类里获取这个类的实例化对象)2、编写insert时忽略了已经存在的结点实现代码208. 实现 Trie (前缀树

2020-09-22 14:47:37 226

原创 [图 拓扑排序 DFS BFS] 207. 课程表(有向图判断是否有环:DFS、BFS)210. 课程表 II (有向图找拓扑排序:BFS)

[图 拓扑排序 DFS BFS] 207. 课程表(有向图判断是否有环:DFS、BFS)207. 课程表题目分析:把问题转化为拓扑排序问题思路1:DFS + 标记数组 判断是否存在回路(并未用到拓扑排序思想)算法设计1、先将边缘列表转化为邻接表2、如何对有向图进行DFS遍历?(对图做DFS的框架,不涉及DFS内部实现)3、如何实现一趟深度优先遍历DFS + 有环判断?实现代码思路2:BFS + 入度数组(拓扑排序思想)算法设计1、边缘列表转换为邻接表(同思路1)2、对有向图的常规BFS要如何实现?3、如何用

2020-09-22 00:05:26 379

原创 [链表] 206. 反转链表 92. 反转链表 II(反转整个链表、前n个节点、第m个~第n个节点:迭代、递归实现)

[链表] 206. 反转链表 92. 反转链表 II(反转整个链表、前n个节点、第m个~第n个节点:迭代、递归实现) 206. 反转链表(反转整个链表)思路1:迭代实现思路2:递归实现(更难理解,更巧妙)92. 反转链表 II(反转部分链表)题目分析:(很好的递归练习题)思路1:一趟扫描 + 迭代实现算法流程思路2:一次扫描 + 递归实现(基于 反转链表前n个节点)206. 反转链表(反转整个链表)题目链接:https://leetcode-cn.com/problems/reverse-linked-

2020-09-21 15:59:15 975

原创 [字符串 哈希表] 205. 同构字符串(利用哈希表寻找双向映射关系)

[字符串 哈希表] 205. 同构字符串(利用哈希表寻找双向映射关系)205.同构字符串题目分析思路1:map + set + 字母种类数比较(自己想到的,推荐)算法设计实现代码思路2:map + 调换参数执行两次思路3:两个数组记录s->t,t->s(较简洁,推荐)知识点:1、char字符写在数组的下标处时会自动转换为ASCII码值。2、int数组存放char型数据时,char型数据会自动转成ASCII码存入。实现代码205.同构字符串题目链接:https://leetcode-cn.co

2020-09-21 00:16:00 265

原创 [数学规律] 204. 计数质数 (质数判断方法:暴力解 → 缩小范围 → 引入bitmap)

[数学规律] 204. 计数质数 (质数判断方法:暴力解 → 缩小范围 → 引入bitmap)204. 计数质数题目分析思路1:暴力解如何判断一个数是不是质数?思路1的优化:缩小计算范围思路2:引入bitmap如何填充bitmap?思路2的优化204. 计数质数题目链接:https://leetcode-cn.com/problems/count-primes/分类:数学规律(找出质数的判断方法)算法优化(暴力解 → 缩小范围 → 引入bitmap)哈希表(bitmap的思想实质上是哈希表)*

2020-09-20 21:47:11 292

原创 [数学规律] 202. 快乐数(寻找数学规律、判断是否无限循环:Set、快慢指针法)

[数学规律] 202. 快乐数(寻找数学规律、判断是否无限循环:Set、快慢指针法)202. 快乐数题目分析:(难度不止简单)思路1:set 暴力解法如何判断一个数是否陷入无限循环?实现代码思路2:快慢指针法(模仿链表找环,更巧妙)如何把链表的快慢指针法应用到这题上?实现代码202. 快乐数题目链接:https://leetcode-cn.com/problems/happy-number/关键点(分类):数学规律、问题转化(找快乐数 → 判断是否无限循环)判断是否无限循环:HashSet、快慢

2020-09-20 17:53:16 1167

原创 [位运算] 201. 数字范围按位与 (总结规律、寻找最长公共前缀:移位、n & n-1)

[位运算] 201. 数字范围按位与 (总结规律、寻找最长公共前缀:移位、n & n-1)201. 数字范围按位与题目分析思路1:暴力解 + 溢出处理存在的问题1、用例出错(for-i循环导致i溢出)2、效率较低实现代码思路2:寻找最长公共前缀(移位、n&n-1)算法分析算法实现:如何寻找[m.n]的最长前缀?方法1:移位方法2:n & n - 1201. 数字范围按位与题目链接:https://leetcode-cn.com/problems/bitwise-and-of-nu

2020-09-20 16:34:17 439 2

原创 [DFS BFS] 200. 岛屿数量(DFS + used数组 + 空间优化)

[DFS BFS] 200. 岛屿数量(DFS + used数组 + 空间优化)200. 岛屿数量思路1:DFS + 辅助数组 -> 空间优化关键问题:如何寻找当前岛屿的所有节点?算法流程实现代码200. 岛屿数量题目链接:https://leetcode-cn.com/problems/number-of-islands/相似题目:130. 被围绕的区域分类:深度优先遍历、广度优先遍历、图、并查集(待补充)思路1:DFS + 辅助数组 -> 空间优化设置一个辅助二维数组记录每个元

2020-09-20 12:17:08 192

空空如也

空空如也

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

TA关注的人

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