自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [动态规划]62. 63.不同路径 I II(回溯法、动态规划 + 优化)115. 不同的子序列(双序列动态规划)120. 三角形最小路径和(滚动数组优化)

[动态规划 leetcode]62. 不同路径(回溯法、动态规划 + 优化)62. 不同路径思路1:回溯法关键问题:如何用代码表示向下移动或向右移动?实现代码思路2:动态规划(推荐)思路2的空间优化:按行处理。关键问题:1、pre和cur的更新问题:2、pre、cur数组的初始化:实现代码62. 不同路径题目链接分类:回溯法、动态规划思路1:回溯法机器人每到达一个节点都有两个选择:向下或向右。关键问题:如何用代码表示向下移动或向右移动?机器人起点(1,1),设移动过程中机器人位置=(i,j)

2020-11-09 13:13:02 321

原创 [树层次遍历的应用] 116. 117. 填充每个节点的下一个右侧节点指针 I II (队列层次遍历、迭代)

[树层次遍历的应用] 116. 117. 填充每个节点的下一个右侧节点指针 I II (队列层次遍历、迭代) 116.填充每个节点的下一个右侧节点指针(完美二叉树)思路1:队列层次遍历 + 找出每一层的最后一个节点思路2:迭代 + 遍历上一层链表117. 填充每个节点的下一个右侧节点指针 II (一般二叉树)分析(同116思路2)1、迭代的终止条件2、当前层的链表头结点head的选取3、节点next域的填充实现代码116.填充每个节点的下一个右侧节点指针(完美二叉树)题目链接:https://leetc

2020-11-09 13:11:04 160

原创 [树遍历的应用]110. 平衡二叉树(后序遍历)111.二叉树的最小深度(前序遍历)114. 二叉树展开为链表(前序遍历:迭代、morris)

[树遍历的应用 leetcode]110. 平衡二叉树(后序遍历)110. 平衡二叉树(后序遍历、剪枝)思路1:后序遍历实现时遇到的问题:特殊用例[]实现代码思路1优化:短路或 + if上写赋值语句实现代码110. 平衡二叉树(后序遍历、剪枝)题目链接:https://leetcode-cn.com/problems/balanced-binary-tree/分类:树、递归(后序遍历)这题是二叉树遍历的应用。递归练习题。思路1:后序遍历根据后序遍历的特点:先左右,再根节点,所以在处理根节点时就

2020-11-09 13:10:28 165

原创 [前缀和-动态规划] 560. 和为K的子数组(一维前缀和 → 空间优化 → 前缀和+哈希表)

[前缀和-动态规划] 560. 和为K的子数组(前缀和法 → 空间优化 → 前缀和+哈希表)560. 和为K的子数组什么是前缀和?一维前缀和二维前缀和前缀和的应用(*****)思路1:前缀和(O(N^2),O(N))思路2:思路1空间优化(O(N^2),O(1))思路3:前缀和+哈希表(O(N),O(N),推荐)560. 和为K的子数组题目链接:https://leetcode-cn.com/problems/subarray-sum-equals-k/分类:动态规划(前缀和)、哈希表..

2020-11-02 23:38:24 308 1

原创 [链表 双指针] 141. 环形链表(快慢指针找环)142. 环形链表 II(双指针求倒数第k个节点)143. 重排链表(快慢指针找中位点+原地逆序链表)

[链表 双指针] 141. 142. 环形链表 I II(快慢指针找环、双指针求倒数第k个节点)141. 环形链表(快慢指针判断是否有环,不需要找环的起点)思路1:map存放链表节点 (空间复杂度O(N))思路2:双指针法(空间复杂度为O(1))142. 环形链表 II (寻找找出环的入口节点)思路1:快慢指针(找环)+同步指针(思路同找倒数第k个节点)141. 环形链表(快慢指针判断是否有环,不需要找环的起点)题目链接:https://leetcode-cn.com/problems/linked-l

2020-10-31 13:33:04 121

原创 [蓄水池抽样] 382. 链表随机节点 398. 随机数索引

[蓄水池抽样] 382. 链表随机节点 398. 随机数索引382. 链表随机节点思路:蓄水池抽样什么是蓄水池抽样?算法原理382. 链表随机节点题目链接:https://leetcode-cn.com/problems/linked-list-random-node/分类:算法积累:蓄水池抽样(每个数被选择的概率相同)思路:蓄水池抽样这题要我们设计一种“随机从链表中选出一个节点”的算法,要保证链表中每个节点被选中的概率是一样的。本题属于特殊情况下的蓄水池抽样问题,求解前先了解一下蓄

2020-10-31 13:13:22 178

原创 [回溯 动态规划]131. 132 分割回文串 I II (回溯法→动态规划)

[回溯->动态规划]131. 132 分割回文串 I II (回溯法、动态规划)131. 分割回文串 I(找出所有子串解集)思路1:回溯法(未做优化)算法设计1、变量设置2、回溯函数的设置:3、子串回文的判断:双指针法实现代码思路1优化:动态规划提前构造回文判断数组实现遇到的问题:dp数组下标和substring下标的区间开闭情况不同实现代码132. 分割回文串 II(计算最少分割次数)题目分析:思路:动态规划131. 分割回文串 I(找出所有子串解集)题目链接:https://leetcode-

2020-10-28 18:29:36 168

原创 [回溯法 leetcode]126. 127 单词接龙 II I (回溯法、DFS、BFS、优化)

[回溯法 leetcode]126. 单词接龙 II (回溯法、DFS、BFS、优化)126.单词接龙 II题目分析思路1:DFS回溯(初始解法,理解问题)关键问题:1、如何从字典里找到下一个可行的转换?2、回溯法的流程3、易忽略点:题目要求的是最短序列!实现代码思路2:DFS回溯 + BFS寻找最短序列长度关键问题:1、如何将问题转化为图问题?2、如何进行BFS?借助队列 + 如何在BFS过程中找到最短序列长度?知识点:set,map,String,char[]实现时遇到的问题:1、if(found) b

2020-10-28 18:28:28 266

原创 [树] 101. 对称二叉树(前序遍历 + 方法优化)

[树 leetcode] 101. 对称二叉树(前序遍历 + 方法优化)第101. 对称二叉树思路1:左右同步深度优先遍历(前序遍历 - 递归实现,遍历2次)实现代码思路1 优化:只遍历一次实现代码思路2:左右同步深度优先遍历(前序遍历 - 迭代实现,遍历2次)第101. 对称二叉树题目链接:https://leetcode-cn.com/problems/symmetric-tree/分类:树(二叉树)、前序遍历(递归、迭代)、算法优化思路1:左右同步深度优先遍历(前序遍历 - 递归实现,遍历2

2020-10-23 14:36:15 345

原创 [二叉树遍历递归和迭代实现整理]144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历

二叉树遍历的递归和迭代实现前序遍历概念 + 举例习题递归实现迭代实现写法1:只有右孩子入栈前序遍历概念 + 举例前序遍历:对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。例如:前序遍历序列:[1,2,4,6,7,3,5]习题题目链接:144. 二叉树的前序遍历递归实现二叉树遍历的递归实现都很简单,只需要按上面所述的前序遍历的概念出发编写代码即可:先树根,然后左子树,然后右子树。每棵子树递归。在递归函数最前面设置好递归出口:当root == null,退出当前递归

2020-10-23 14:35:11 145

原创 [二叉搜索树(递归练习)]96.95.不同的二叉搜索树 I II (动态规划、递归)

[二叉搜索树(递归练习)leetcode]96.95.不同的二叉搜索树 I II (动态规划、递归)95. 不同的二叉搜索树 II(很好的递归练习题)题目分析思路:递归法算法设计1、如何用递归构建一棵二叉搜索树?2、如何递归构建多个二叉树?实现代码96. 不同的二叉搜索树题目分析思路1:动态规划 + 分治法1、状态设置 + 状态转移方程2、如何体现分治思想?3、dp数组实现时遇到的问题为什么dp[0]要设置为1?实现代码95. 不同的二叉搜索树 II(很好的递归练习题)题目链接:95. 不同的二叉搜索树

2020-10-23 14:33:43 116

原创 [二分查找 ]74. 搜索二维矩阵(二维数组上的二分查找)

[二分查找 leetcode 74]74. 搜索二维矩阵(二维数组上的二分查找)第74题.搜索二维矩阵(二分查找)思路1:先二分找到所在行,再二分查找所在列实现遇到的问题:1、特殊用例的处理(易忽略)2、代码实现需要写两个二分查找代码实现代码思路2:将二维下标转换为一维下标,相当于在一维数组上做二分查找(推荐)实现遇到的问题:特殊用例的处理(易忽略)实现代码第74题.搜索二维矩阵(二分查找)74. 搜索二维矩阵分类:二维数组、二分查找思路1:先二分找到所在行,再二分查找所在列先取矩阵每一行的第0

2020-10-23 14:32:21 411

原创 [滑动窗口]76. 最小覆盖子串(滑动窗口、哈希表)

[滑动窗口 leetcode]76. 最小覆盖子串(滑动窗口、哈希表)第76题.最小覆盖子串(滑动窗口、哈希表)思路:滑动窗口关键问题:如何判断窗口内字符串包含t所有字符?(check函数的编写)知识点:map的遍历(重点、生疏点)实现代码思路1的优化(修改调用check的时机、字符串预处理)分析优化措施1:修改调用check的时机优化措施2:预处理字符串s实现代码:第76题.最小覆盖子串(滑动窗口、哈希表)题目链接:76. 最小覆盖子串分类:字符串、滑动窗口、哈希表思路:滑动窗口设置滑动窗口左

2020-10-20 11:23:16 102

原创 [单调栈 ]42.接雨水 84.柱状图中最大的矩形(暴力法 -> 单调栈)

[单调栈 leetcode]42.接雨水 84.柱状图中最大的矩形(暴力法 -> 单调栈)42.接雨水思路1:暴力解(所有解法的基本思想,很关键)思路2:动态规划思路3:双指针法(动态规划的空间优化,最佳解法)思路4:单调栈(按行计算 + 算法原理改进,推荐解法)分析如何用栈来实现这一过程?84. 柱状图中最大的矩形题目分析思路1:暴力解思路2:动态规划(没找到可行方法)思路3:单调栈 + 哨兵技巧实现代码(更好理解)代码简化42.接雨水题目链接:42.接雨水分类:数组、栈(单调栈)、动态规划、

2020-10-18 13:11:45 157 1

原创 [链表]82.83. 删除排序链表中的重复元素 I II(三指针法)

[链表 leetcode]82. 删除排序链表中的重复元素 II(链表问题、三指针法)82. 删除排序链表中的重复元素 II(滑动窗口、哈希表)思路:三指针法算法设计算法流程实现时遇到的问题:1、边界条件的考虑2、pre=null时的收尾处理(易遗漏)实现代码82. 删除排序链表中的重复元素 II(滑动窗口、哈希表)题目链接:82. 删除排序链表中的重复元素 II分类:链表、三指针法思路:三指针法算法设计设置一个pre指向head的前一个节点,last作为不重复链表的最后一个节点,head作为

2020-10-17 15:49:50 140

原创 [回溯法]77.组合(回溯+剪枝)78.子集 90.子集II (解集去重)79.单词搜索(二维平面回溯)

[回溯法 leetcode]77.组合(回溯法 + 剪枝)77.组合思路1:回溯法实现代码(剪枝前):剪枝:(难点)实现代码(剪枝后):77.组合题目链接:77.组合分类:回溯法、剪枝处理思路1:回溯法状态变量:used数组标记1~n的数字是否被使用过,depth表示递归深度,等于生成的组合大小,这里当depth==k时就说明得到一个k个数的组合。存储变量:List<List> res存放最终的解集,List list存放一个解,在depth==k时将list加入到res中。注

2020-10-16 13:25:19 128

原创 [动态规划 二分查找] 300. 最长上升子序列(动态规划 → 动态规划 + 二分查找)

[动态规划 二分查找] 300. 最长上升子序列(动态规划 → 动态规划 + 二分查找)300. 最长上升子序列题目分析思路1:动态规划思路2:动态规划 + 二分查找 + 贪心300. 最长上升子序列题目链接:https://leetcode-cn.com/problems/longest-increasing-subsequence/分类:动态规划:dp[i]表示以nums[i]为结尾的最长上升子序列长度,线性查找“nums[0~i-1]内小于nums[i]的元素中的dp最大值”,思路1;二

2020-10-16 01:42:19 166

原创 [哈希表] 299. 猜数字游戏(三次遍历+两个Map → 两次遍历+两个数组 → 一次遍历+一个数组)

[哈希表] 299. 猜数字游戏(三次遍历+两个Map → 两次遍历+两个数组 → 一次遍历+一个数组)299. 猜数字游戏题目分析思路1:三次遍历 + 两个哈希表思路2:两次遍历 + 两个数组思路3:一次遍历 + 一个数组299. 猜数字游戏题目链接:https://leetcode-cn.com/problems/bulls-and-cows/分类:哈希表(使用哈希表记录数字和它的出现次数)两个字符串用两个哈希表统计,第1次遍历计算bulls,第2次遍历统计两字符串数字及出现次数,第3次

2020-10-15 17:56:48 260

原创 [树 字符串] 297. 二叉树的序列化与反序列化(DFS、BFS)

[[树 字符串] 297. 二叉树的序列化与反序列化(DFS、BFS)297. 二叉树的序列化与反序列化思路1:BFS思路2:DFS知识点:数组转成队列(数组 -(Arrays.asList)-> 列表 -(构造器)->队列)297. 二叉树的序列化与反序列化题目链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/分类:树、字符串(二叉树序列化:树 → 字符串,二叉树反序列化:字符串 →

2020-10-15 00:23:44 204

原创 [堆 二叉搜索树] 295. 数据流的中位数(排序法 → 二叉搜索树法(手写BST+查找第k小元素)、大小顶堆法(设计出入堆规则))

[堆 二叉搜索树] 295. 数据流的中位数(排序法 → 二叉搜索树法(手写BST+BST上查找第k小元素)、大小顶堆法(设计出入堆规则))295. 数据流的中位数题目分析思路1:排序思路2:二叉搜索树法(练习手写BST,比较麻烦)思路3:大小堆法(推荐)295. 数据流的中位数题目链接:https://leetcode-cn.com/problems/find-median-from-data-stream/分类:数学:中位数 = 有序列表中间的数或中间两个数的平均值,根据中位数特点设计add

2020-10-14 01:53:20 360

原创 [数学] 292. Nim 游戏(递归 → 动态规划 → 数学规律)

[数学] 292. Nim 游戏(递归 → 动态规划 → 数学规律)292. Nim 游戏题目分析思路1:问题分析(关键) + 递归实现思路2:动态规划空间优化:使用滚动数组思路3:数学规律292. Nim 游戏题目链接:https://leetcode-cn.com/problems/nim-game/分类:数学(根据新概念“Nim游戏”总结数学规律:必胜态、必输态)题目分析本题提出了一个新概念“Nim游戏”,我们可以将其抽象成数学问题,寻找其中的数学规律。这里参考下面的题解,从状态

2020-10-13 16:10:45 299 1

原创 [哈希表] 290. 单词规律(哈希表实现双向映射:containsValue、两个哈希表、借助中转数字字符串)

[哈希表] 290. 单词规律(哈希表实现双向映射:containsValue、两个哈希表、借助中转数字字符串)290. 单词规律题目分析思路1:一个哈希表 + containsValue函数实现遇到的问题:特殊用例思路2:两个哈希表记录双向映射关系(推荐)思路3:一个哈希表 + 字母、单词都转换成数字(推荐)思路4:两个哈希表 + 字母、单词都转换成数字(对思路3的改进,推荐)290. 单词规律题目链接:https://leetcode-cn.com/problems/word-pattern/分

2020-10-13 00:33:35 248 1

原创 [二维数组] 73. 矩阵置零(HashSet记录坐标 → 第0行第0列代替Set) 289. 生命游戏(特殊值标记法)

[二维数组] 73. 矩阵置零(HashSet记录坐标 → 第0行第0列代替Set) 289. 生命游戏(特殊值标记法)73. 矩阵置零题目分析思路1:两个Set存放初始0元素的横纵坐标思路2:特殊值标记法(推荐,空间O(1),时间O(M\*N\*(M+N)))思路3:借用第0行和第0列代替两个set(推荐,空间O(1), 时间O(MN))289. 生命游戏题目分析思路:特殊值标记法73. 矩阵置零题目链接:https://leetcode-cn.com/problems/set-matrix-zero

2020-10-12 20:18:15 761 1

原创 [二分查找 双指针 位运算] 287.寻找重复数(值域二分、位运算、快慢指针找环入口)

[二分查找 双指针 位运算] 287.寻找重复数(值域二分、位运算、快慢指针找环入口)287.寻找重复数题目分析思路1:值域二分(非常规二分,时间换空间,O(NlogN))思路2:位运算(O(N))实现遇到的问题:思路3:快慢指针法(数组 → 链表,环入口 = 重复数,O(N))287.寻找重复数题目链接:https://leetcode-cn.com/problems/find-the-duplicate-number/分类:二分查找(对数组元素的值域做二分寻找重复数值)位运算(统计数组所有

2020-10-11 23:41:06 240

原创 [设计] 284. 顶端迭代器(改造Iterator:辅助队列 → 预存next的返回值)

[设计] 284. 顶端迭代器(改造Iterator:辅助队列 → 预存next的返回值)284. 顶端迭代器题目分析思路1:辅助队列(空间 O(N))思路2:预存next()的返回值(空间 O(1))284. 顶端迭代器题目链接:https://leetcode-cn.com/problems/peeking-iterator/solution/分类:设计:基于Iterator的基本函数,设计一个peek函数(辅助队列(思路1) → 预存next返回值(思路2))题目分析本题需要在I

2020-10-11 18:03:07 93

原创 [双指针] 283. 移动零(双指针+两次遍历 → 一次遍历)

[双指针] 283. 移动零(双指针+两次遍历 → 一次遍历)283. 移动零题目分析思路1:双指针 + 两次遍历(O(2N))思路2:双指针 + 一次遍历(O(N))283. 移动零题目链接:https://leetcode-cn.com/problems/move-zeroes/分类:双指针:两次遍历:p1寻找非零元素,p2拿p1找到的非零元素覆盖零元素(思路1);一次遍历:快排思想,零元素作为枢轴,非零元素放到左边,零元素放到右边(思路2)。题目分析题目要求:在原数组上

2020-10-11 14:11:06 195

原创 [回溯 字符串] 282. 给表达式添加运算符(回溯法:考虑乘法优先级)

[回溯 字符串] 282. 给表达式添加运算符(回溯法:考虑乘法优先级)282. 给表达式添加运算符思路:回溯法实现遇到的问题:前导零问题282. 给表达式添加运算符题目链接:https://leetcode-cn.com/problems/expression-add-operators/分类:回溯法(画出回溯树、for循环划分数字、先实现加减法再实现乘法、乘法引入pre变量指向前一个因子)字符串(递归传递字符串String和StringBuilder、保存现场和恢复现场)思路:回

2020-10-11 01:29:05 310

原创 [DFS BFS 动态规划] 279. 完全平方数(回溯法DFS → 动态规划、BFS、数学定理+排除法)

[DFS BFS 动态规划] 279. 完全平方数(回溯法DFS → 动态规划、BFS、数学定理+排除法)279. 完全平方数思路1:回溯法DFS(暴力解)思路2:动态规划(推荐)思路3:BFS(推荐)思路4:数学(记下结论就行)279. 完全平方数题目链接:https://leetcode-cn.com/problems/perfect-squares/分类:回溯法:DFS思想,一趟DFS返回一个划分方案所需要的最少完全平方数个数(思路1);动态规划:辅助数组优化回溯法,dp[i] = 数字

2020-10-09 22:59:30 246

原创 [二分查找] 278. 第一个错误的版本(二分查找迭代实现)

[二分查找] 278. 第一个错误的版本(二分查找迭代实现)278. 第一个错误的版本思路:二分查找278. 第一个错误的版本题目链接:https://leetcode-cn.com/problems/first-bad-version/分类:二分查找(迭代实现、设计查找规则、退出循环条件、返回值)思路:二分查找二分查找规则版本1:一轮二分查找需要调用两次isBadVersion本二分查找规则的循环条件是while(left <= right),循环条件的设置和二分区间的截取方式有

2020-10-09 17:08:05 85

原创 [排序 二分查找] 274. H 指数(比较排序 → 计数排序)275. H 指数 II(线性查找 → 二分查找)

[排序 二分查找] 274. H 指数(比较排序 → 计数排序)275. H 指数 II(线性查找 → 二分查找)274. H 指数(citations数组无序)思路1:排序 (O(NlogN))思路2:计数排序(O(N))275. H 指数 II (citations数组有序)题目分析思路1:遍历查找 O(N)思路2:二分查找 O(logN)274. H 指数(citations数组无序)题目链接:https://leetcode-cn.com/problems/h-index/分类:数学:新

2020-10-09 16:38:15 161

原创 [字符串 数学] 273. 整数转换英文表示(分组转换)

[字符串 数学] 273. 整数转换英文表示(分组转换)273. 整数转换英文表示思路:分组转换273. 整数转换英文表示题目链接:https://leetcode-cn.com/problems/integer-to-english-words/分类:数学(给定数字转英文的规则、数字分组转换:从最低位开始每3位分成一组进行转换)字符串(设置字符串数组:THOUSAND,LESS_THAN_TWENTY,HUNDRED作为字典数组、转换细节:空格符的处理)思路:分组转换理解转换规则:

2020-10-08 21:49:45 297

原创 [数学 位运算 哈希表] 268. 缺失数字(排序法 → HashSet → 位运算、数学计算+避免溢出)

[数学 位运算 哈希表] 268. 缺失数字(排序法 → HashSet → 位运算、数学计算+避免溢出)268. 缺失数字思路1:排序 + 遍历 (O(NlogN) O(N))思路2:辅助数组(同HashSet,O(N) O(N))思路3:位运算-异或 (O(N) O(1))思路4:数学 + 溢出避免(O(N) O(1))268. 缺失数字题目链接:https://leetcode-cn.com/problems/missing-number/分类:排序(Arrays.sort对数组排序、遍

2020-10-08 16:04:38 140

原创 [数学 堆 动态规划] 263. 丑数 264. 丑数 II(暴力解 → 小顶堆 、动态规划+三指针)

[数学 堆 动态规划] 263. 丑数 264. 丑数 II(暴力解 → 小顶堆 → 动态规划+三指针)263. 丑数(判断是否为丑数)思路:数学264. 丑数 II(寻找第n个丑数)题目分析思路1:暴力解思路2:小顶堆(推荐)实现遇到的问题思路3:动态规划-三指针法(推荐)263. 丑数(判断是否为丑数)题目链接:https://leetcode-cn.com/problems/ugly-number/分类:数学(丑数的特点:只包含质因数2,3,5)递归实现、迭代实现(拿2,3,5循环除nu

2020-10-08 11:54:17 176

原创 [位运算 哈希表] 136. 只出现一次的数字(哈希表法 → 位运算)137.只出现一次的数字 II (位运算+遍历统计、逻辑电路法)260. 只出现一次的数字 III(位运算+分组异或)

[leetcode]137.只出现一次的数字 II题目思路:位运算准备方法1:遍历统计法分析算法流程要点复杂度分析思路2:后序遍历+剪枝分析知识点(带返回值递归的剪枝)代码复杂度分析位运算技巧位运算-leetcode类似题目:题目链接思路:位运算准备解决这个问题之前,可以先看下位运算类似的简单问题:leetcode 136. 只出现一次的数字参考题解方法1:遍历统计法分析出现3次的数字的二进制形式中,统计所有这些元素的每一个二进制位1的出现次数可以发现1的出现次数都是3的倍数.再把只

2020-10-08 00:28:20 275

原创 [数学] 258. 各位相加 (循环,递归 → 数学推导)

[数学] 258. 各位相加 (循环,递归 → 数学推导)258. 各位相加思路1:使用循环思路2:使用递归思路3:数学规律(数根 = num%9)258. 各位相加题目链接:https://leetcode-cn.com/problems/add-digits/分类:数学:反复做各位相加直到一位数 = 求“数根”举例推导数学规律:数根 = num%9简单证明:x*100+y*10+z=x*99+y*9+x+y+z思路1:使用循环不断获取num的每一位,叠加后覆盖为新的nu

2020-10-07 14:15:50 482

原创 [哈希表 排序] 242. 有效的字母异位词(排序法、哈希表法 → 空间优化)

[哈希表 排序] 242. 有效的字母异位词(排序法、哈希表法 → 空间优化)242. 有效的字母异位词思路1:排序思路2:使用map242. 有效的字母异位词题目链接:https://leetcode-cn.com/problems/valid-anagram/解题思路类似:剑指offer面试题50分类:排序(将字符串转成字符数组,Arrays.sort对字符数组排序)哈希表(key = 字符,value = 出现次数、空间优化:用固定大小的数组代替哈希表)思路1:排序将字符串转

2020-10-06 22:29:59 143

原创 [字符串 分治法] 241. 为运算表达式设计优先级 (分治法)

[字符串 分治法] 241. 为运算表达式设计优先级 (分治法)241. 为运算表达式设计优先级思路:分治法 (递归实现)241. 为运算表达式设计优先级题目链接:https://leetcode-cn.com/problems/different-ways-to-add-parentheses/分类:字符串:解析字符串上的数字,运算符、构造所有可能的括号组合;分治法:按运算符划分式子,返回子式的计算结果集合;动态规划:见参考链接的解法2.思路:分治法 (递归实现)问题分解:例如

2020-10-06 20:52:31 200

原创 [二分查找 BST思想] 240. 搜索二维矩阵 II(二分查找可疑行 → 模拟二叉搜索树)

[二分查找 BST思想] 240. 搜索二维矩阵 II(二分查找可疑行 → 模拟二叉搜索树)240. 搜索二维矩阵 II思路1:寻找可疑行范围 + 对可疑行做二分查找思路2:模拟二叉搜索树(推荐)实现代码(递归实现)实现代码(迭代实现,推荐)240. 搜索二维矩阵 II题目链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/分类:二分查找:矩阵上做二分查找、通过每一行的min,max缩小可疑行范围、对可疑行做二分查找二

2020-10-06 14:22:52 114

原创 [滑动窗口+双向队列的应用] 239. 滑动窗口最大值(暴力解法 → 单调队列法)

[滑动窗口+双向队列的应用] 239. 滑动窗口最大值(暴力解法 → 单调队列法)239. 滑动窗口最大值思路1:暴力解思路2:单调队列法(双向队列模拟单调队列)239. 滑动窗口最大值题目链接:https://leetcode-cn.com/problems/sliding-window-maximum/分类:滑动窗口(两种设置左右边界初始值的方法、求滑动窗口内最大值:暴力解法 → 单调队列法)单调队列(基于双向队列,队尾到队首非递减存放窗口内可能成为max的元素,队首 == 当前窗口max

2020-10-06 00:06:10 240

原创 [动态规划+优化] 238. 除自身以外数组的乘积(暴力解 → 动态规划 → 空间优化)

[动态规划+优化] 238. 除自身以外数组的乘积(暴力解 → 动态规划 → 空间优化)238. 除自身以外数组的乘积题目分析思路1:暴力解 (时间O(N^2),空间O(1))思路2:左右乘积列表 (双向动态规划,时间O(N),空间O(N))思路3:思路2的空间优化(时间O(N),空间O(1))238. 除自身以外数组的乘积题目链接:https://leetcode-cn.com/problems/product-of-array-except-self/同 剑指 Offer 66. 构建乘积数组 h

2020-10-05 00:35:41 119

空空如也

空空如也

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

TA关注的人

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