- 博客(149)
- 收藏
- 关注
原创 MySQL索引
B+树索引 自适应哈希索引(自动生成)B+树索引:叶子节点会形成一个双向链表。聚集索引:按照每张表的主键构造一颗B+树(每张表只能有一个聚集索引),叶子节点是数据页。注:B+树索引不能找到具体行(叶子节点为数据页),只能找到具体行所在的数据页,然后将数据页读入内存,按行查找具体行(二分)。聚集索引的存储-逻辑上连续,非物理上连续。(数据页双向链表,业内数据也...
2019-05-21 19:55:19
403
1
原创 LeetCode-150. 逆波兰表达式求值(相关话题:栈)
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例...
2019-04-18 11:26:14
301
原创 LeetCode-149. 直线上最多的点数(相关话题:哈希表)
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o +------------->0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4解...
2019-04-18 11:23:10
352
原创 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->5Java代码:class Solution { pu...
2019-04-18 10:52:09
202
原创 LeetCode-147. 对链表进行插入排序
插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3-...
2019-04-18 10:49:10
193
原创 LeetCode-145. 二叉树的后序遍历(相关话题:栈)
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?Java代码:class Solution { public List<Integer> postorderTraversal(TreeNo...
2019-04-18 10:42:28
183
原创 LeetCode-144. 二叉树的前序遍历(相关话题:栈)
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?Java代码:class Solution { public List<Integer> preorderTraversal(TreeNod...
2019-04-18 10:34:29
149
原创 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, 重...
2019-02-21 10:30:44
187
原创 LeetCode-142.环形链表 II(相关话题:双指针)
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index ...
2019-02-21 10:15:19
157
原创 LeetCode-141.环形链表(相关话题:双指针)
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。3->2->0->-4 |______|示例 ...
2019-02-21 10:09:03
176
原创 LeetCode-140.单词拆分 II(相关话题:动态规划、回溯)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入:s = "catsanddog"wordDict = ["cat", "cats", "and", "sand", "dog&qu
2019-02-20 18:59:33
269
原创 LeetCode-139.单词拆分(相关话题:动态规划)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可...
2019-02-20 18:55:45
139
原创 LeetCode-138.复制带随机指针的链表(相关话题:哈希表)
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。Java代码:public class Solution { public RandomListNode copyRandomList(RandomListNode head) { if (null == head) r...
2019-02-20 18:45:28
198
1
原创 LeetCode-137.只出现一次的数字 II(相关话题:位运算)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99思路:位运算,遍历数组,统计0~31的每一个二进制位上,1出现的次数,若为3的...
2018-12-22 17:37:31
220
原创 LeetCode-136.只出现一次的数字(相关话题:位运算)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:位运算 异或操作,满足交换律:a ^ b = b ^ a,其次:0 ^ a = a因此...
2018-12-22 17:30:23
146
原创 LeetCode-135.分发糖果(相关话题:贪心算法)
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例...
2018-12-22 17:26:00
1153
2
原创 LeetCode-134.加油站(相关话题:贪心算法)
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明: 如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。 输入数组...
2018-12-22 17:03:05
393
原创 LeetCode-133.克隆图(相关话题:广度优先)
克隆一张无向图,图中的每个节点包含一个 label (标签)和一个 neighbors (邻接点)列表 。OJ的无向图序列化:节点被唯一标记。我们用 # 作为每个节点的分隔符,用 , 作为节点标签和邻接点的分隔符。例如,序列化无向图 {0,1,2#1,2#2,2}。该图总共有三个节点, 被两个分隔符 # 分为三部分。 第一个节点的标签为 0,存在从节点 0 到节点 1 和节...
2018-12-22 16:56:19
192
原创 LeetCode-132.分割回文串 II(相关话题:动态规划)
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: "aab"输出: 1解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。思路:从后往前处理:boolean[][] f,f[i][j]表示s[i~j]是否为回文串 int[] min, min[i]表示s[i~n-1]最少需要切几次...
2018-12-22 16:52:30
200
原创 LeetCode-131.分割回文串(相关话题:动态规划、深度优先)
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]思路:动态规划判s[i~j]是否为回文串 深度优先搜索所有可能的分割方案Java代码:public List<List<String
2018-12-22 16:43:48
665
原创 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' 都不会...
2018-12-22 16:33:37
292
原创 LeetCode-129.求根到叶子节点数字之和(相关话题:深度优先)
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 ...
2018-12-22 16:26:47
135
原创 LeetCode-128.最长连续序列(相关话题:并查集)
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 并查集:初始时,让每个元素都作为一个含有单元素的集合存在然后按照一定顺序处理每个元素,将同一组的元素(此题中即为相邻数字)所在的集合合并此题中,用M...
2018-12-22 16:20:39
741
原创 LeetCode-127.单词接龙(相关话题:广度优先)
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明:如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 end...
2018-11-12 17:36:12
316
原创 LeetCode-126.单词接龙II(相关话题:Dijkstra算法+深度优先)
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明:如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 ...
2018-11-12 17:18:04
1221
原创 LeetCode-125.验证回文串(相关话题:字符串)
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseJava代码:class Solution { public boo...
2018-11-07 17:37:56
102
原创 LeetCode-124.二叉树中的最大路径和(相关话题:深度优先)
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 ...
2018-11-07 17:33:43
290
原创 git push远程分支error: src refspec xxx does not match any.
error: src refspec xxx does not match any.error: failed to push some refs to 'ssh://git@' 解决方法:git push origin HEAD:branchName
2018-11-06 19:01:45
3199
1
原创 LeetCode-123.买卖股票的最佳时机III(相关话题:动态规划)
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获...
2018-11-05 19:49:28
315
原创 LeetCode-122.买卖股票的最佳时机II(相关话题:贪心算法)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...
2018-11-05 19:33:13
154
原创 LeetCode-121.买卖股票的最佳时机(相关话题:动态规划)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...
2018-11-05 19:25:41
181
转载 git撤销commit,但未git push的命令
在git push的时候,有时候我们会想办法撤销git commit的内容 1、找到之前提交的git commit的id git log 找到想要撤销的id 2、git reset --hard id 完成撤销,同时将代码恢复到前一commit_id 对应的版本 3、git reset id 完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新...
2018-10-23 11:46:43
191
原创 LeetCode-120.三角形最小路径和(相关话题:动态规划)
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...
2018-10-19 19:57:52
231
原创 LeetCode-119.杨辉三角II(相关话题:数组)
Java代码:class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> res = new ArrayList<>(rowIndex+1); for(int i = 0; i <= rowIndex; i++){ ...
2018-10-19 19:50:23
91
原创 LeetCode-118.杨辉三角(相关话题:数组)
Java代码:class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<>(numRows); if(numRows > 0){...
2018-10-19 19:49:02
109
原创 LeetCode-117.填充同一层的兄弟节点II(相关话题:广度优先)
给定一个二叉树struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。说明:...
2018-10-19 19:36:49
110
原创 LeetCode-116.填充同一层的兄弟节点(相关话题:广度优先)
给定一个二叉树struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。说明:...
2018-10-19 19:33:14
115
原创 LeetCode-115.不同的子序列(相关话题:动态规划)
给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)示例 1:输入: S = "rabbbit", T = "rabbit"输出: 3解释:如下图所示, 有 3 种可以从...
2018-10-19 19:21:47
195
原创 LeetCode-114.二叉树展开为链表(相关话题:深度优先)
给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6解题思路:按照前序遍历的顺序(栈),展开成链表Java代码:/**...
2018-10-19 19:00:29
220
原创 LeetCode-113.路径总和II(相关话题:深度优先)
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1...
2018-10-19 18:51:54
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人