数据结构
liweiwei1419
简单、诚实。
展开
-
LeetCode 第 993 题:二叉树的堂兄弟结点
EM 算法的思想用拟合的思想来求随机变量的数字特征。例如:模型中有两个未知参数 AAA 和 BBB 需要估计,而 AAA 和 BBB 又存在相互依赖的关系,即知道 AAA 才能推出 BBB,知道了 BBB 才能推出 AAA 。EM 的思路就是先固定其中一个,推测另一个,如此反复。EM 分别代表什么E 表示求期望;M 表示最大化似然函数。(这里没有理解清楚。)EM 算法的用途E...原创 2018-10-23 17:28:52 · 491 阅读 · 0 评论 -
LeetCode 题解之 53. Maximum Subarray(连续子数组的最大和问题)
53. Maximum Subarray(连续子数组的最大和问题)题目描述和难度题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(...原创 2018-07-03 00:17:14 · 13456 阅读 · 2 评论 -
LeetCode 题解之 215. Kth Largest Element in an Array
215. Kth Largest Element in an Array题目描述和难度题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = ...原创 2018-07-02 19:53:08 · 1867 阅读 · 0 评论 -
LeetCode 题解之 15. 3Sum
15. 3Sum题目描述和难度题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1]...原创 2018-07-02 18:33:06 · 321 阅读 · 0 评论 -
[剑指 Offer 第 2 版第 14 题] “剪绳子”做题记录
[剑指 Offer 第 2 版第 14 题] “剪绳子”做题记录牛客网 online judge 地址:https://www.nowcoder.com/practice/623a5ac0ea5b4e5f95552655361ae0a8?tpId=13&tqId=11203&tPage=3&rp=3&ru=/ta/coding-interviews&q...原创 2018-06-20 17:27:03 · 618 阅读 · 0 评论 -
[剑指 Offer 第 2 版第 12 题] “矩阵中的路径”做题记录
[剑指 Offer 第 2 版第 12 题] “矩阵中的路径”做题记录牛客网 online judge 地址:https://www.nowcoder.com/practice/c61c6999eecb4b8f88a98f66b273a3cc?tpId=13&tqId=11218&tPage=4&rp=4&ru=/ta/coding-interviews&am...原创 2018-06-20 17:25:45 · 310 阅读 · 0 评论 -
[剑指 Offer 第 2 版第 11 题] “旋转数组的最小数字”做题记录
[剑指 Offer 第 2 版第 11 题] “旋转数组的最小数字”做题记录牛客网 online judge 地址:https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba?tpId=13&tqId=11159&tPage=1&rp=1&ru=/ta/coding-interviews...原创 2018-06-20 17:23:49 · 230 阅读 · 0 评论 -
[剑指 Offer 第 2 版第 7 题] “重建二叉树”做题记录
[剑指 Offer 第 2 版第 7 题] “重建二叉树”做题记录牛客网 online judge 地址:https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tqId=11157&tPage=1&rp=2&ru=%2Fta%2Fcoding-interviews&...原创 2018-06-20 17:01:23 · 242 阅读 · 0 评论 -
[剑指 Offer 第 2 版第 4 题] “二维数组中的查找”做题记录
[剑指 Offer 第 2 版第 4 题] “二维数组中的查找”做题记录牛客网 online judge 地址:https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&tPage=1&rp=1&ru=/ta/coding-interviews&a...原创 2018-06-20 16:49:00 · 278 阅读 · 0 评论 -
LeetCode 题解之 190. Reverse Bits
190. Reverse Bits题目描述和难度题目描述:颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 0011100101111000001010...原创 2018-07-01 19:56:47 · 390 阅读 · 0 评论 -
LeetCode 题解之 191. Number of 1 Bits
191. Number of 1 Bits题目描述和难度题目描述:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二...原创 2018-07-01 19:45:01 · 309 阅读 · 0 评论 -
LeetCode 题解之 201. Bitwise AND of Numbers Range
201. Bitwise AND of Numbers Range题目描述和难度题目描述:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1: 输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0题目难度:中等。英文网址:201....原创 2018-07-01 19:27:30 · 452 阅读 · 0 评论 -
LeetCode 题解之 326. Power of Three
326. Power of Three题目描述和难度题目描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?题目难度:简单。英文网...原创 2018-07-01 18:11:42 · 302 阅读 · 0 评论 -
LeetCode 题解之 371. Sum of Two Integers
371. Sum of Two Integers题目描述和难度题目描述:不使用运算符 + 和-,计算两整数a 、b之和。示例:若 a = 1 ,b = 2,返回 3。致谢:特别感谢 @fujiaozhu 添加这道问题并创建测试用例。题目难度:简单。英文网址:371. Sum of Two Integers 。中文网址:371. 两整数之和 。思...原创 2018-07-01 18:04:09 · 385 阅读 · 0 评论 -
LeetCode 题解之 538. Convert BST to Greater Tree
538. Convert BST to Greater Tree题目描述和难度题目描述:给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ ...原创 2018-07-03 23:19:14 · 284 阅读 · 0 评论 -
LeetCode 题解之 783. Minimum Distance Between BST Nodes
783. Minimum Distance Between BST Nodes题目描述和难度题目描述:给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。示例:输入: root = [4,2,6,1,3,null,null]输出: 1解释:注意,root是树结点对象(TreeNode object),而不是数组。给定的树 [4,2,6,1,3,...原创 2018-07-03 23:23:26 · 620 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 31-40 题
我们使用数据结构的核心是为了解决问题。使用的数据结构可以高效地解决一类问题。而不是为了使用数据结构而使用数据结构。查找问题是计算机中非常重要的一类基础的问题。使用二分查找法的前提对于有序的数列才能使用二分查找法。小故事 二分查找法的思想在 1946 年就被提出来了。但是第 1 个没有 bug 的二分查找法在 1962 年才出现。二分查找法的时间复杂度是 O(logn) 。注意二分查找法有一个坑原创 2017-09-15 23:22:48 · 750 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 61-68 题
查找专注于找到这个元素。我们思考一下,在 search 这个方法中,我们应该将什么返回回去,一个好的数据结构应该将内部的数据对外隐藏。二分查找树的包含 contain(返回 true 或者 false) 和查找 search(返回相应的 vlaue 值) 同质。考虑查找成功和失败这两种情况。1、首先实现 contain 方法/** * 在整个二叉树中是否包含 key * * @param ke原创 2017-09-16 23:41:41 · 566 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 51-60 题
思路:我们应该充分利用二分搜索树的性质来完成 insert 操作的编写。 /** * 向一棵二分搜索树中插入一个节点 * 千万不要忘记把返回值赋给 root ,这样才符合 root 的定义 * * @param key * @param value */public void insert(K key, V value) { root = insert(root, key, v原创 2017-09-16 23:40:46 · 862 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 41-50 题
二分搜索树这个数据结构的提出,是自来于“查找表”或者说“字典”这种数据结构的。实现查找表,可以通过“普通数组”“顺序数组”“二分搜索树”来实现。其中,最有效的方式就是实现二分搜索树。图:普通数组、顺序数组、二分搜索树对查找、插入、删除元素的时间复杂度分析对于上表的说明:普通数组的插入操作:要先查找有没有这个元素,然后插入或者覆盖。普通数组的删除操作:要先查找有没有这个元素,然后删除或者什么都不做。顺原创 2017-09-15 23:23:24 · 812 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 21-30 题
(1)使用堆实现优先队列动态选择优先级最高的任务执行(2)从 100万个元素中选择前 100每次新放入一个元素之后,把最小堆中的第 1 个元素请出去。(3)多路归并排序(这个思路听起来好像很有意思)如果一个数组有 n 个元素,对这个数组的元素进行 n 路归并排序,此时归并排序就退化成了堆排序。(4)d 叉堆一般的任务使用二叉堆是可以实现的。我们的例子实现的均是最大堆、最大索引堆。可以试着实现以下最小原创 2017-09-15 23:21:03 · 647 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 11-20 题
我们引入了反向查找表。(这一节的内容和思想很重要,要多看。)reverse[i] 表示索引 i 在 indexes(堆)中的位置。引入 reveres 数组的意义是,可以在执行 change 这个方法的时候,使用 O(1) 这个时间复杂度,直接找到性质:性质1:如果indexes[i]=j,那么reveres[j]=i性质2:indexes[reveres[i]]=i,reveres[index[i原创 2017-09-15 23:20:14 · 1025 阅读 · 0 评论 -
《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 01-10 题
最大索引堆change 操作:首先我们来解释一下 change 操作,在实际应用中,我们除了有 insert 和 extract 这两个操作以外,我们数组中的元素很可能是动态变化的,在变化的过程中,如何保持最大堆的性质,这就是我们要讨论的问题。最大索引堆的特性1、最大索引堆的内部维护了一个索引数组,这个索引数组构成了一个最大堆;2、使用最大索引堆的时候,可以很好地支持 change 这个操作,即我们原创 2017-09-15 23:18:54 · 1679 阅读 · 0 评论 -
LeetCode 题解之 452. Minimum Number of Arrows to Burst Balloons
452. Minimum Number of Arrows to Burst Balloons题目描述和难度题目描述:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在...原创 2018-11-15 13:53:36 · 559 阅读 · 0 评论 -
LeetCode 题解之 283. Move Zeroes
283. Move Zeroes题目描述和难度题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题目难度:简单。英文网址:283. Move Zeroes 。中文网址:283...原创 2018-11-13 12:00:12 · 346 阅读 · 0 评论 -
LeetCode 题解之 82. Remove Duplicates from Sorted List II
82. Remove Duplicates from Sorted List II题目描述和难度题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->...原创 2018-07-14 18:23:06 · 304 阅读 · 0 评论 -
LeetCode 题解之 566. Reshape the Matrix
566. Reshape the Matrix题目描述和难度题目描述:在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操...原创 2018-07-18 19:41:20 · 336 阅读 · 0 评论 -
LeetCode 题解之 240. Search a 2D Matrix II
240. Search a 2D Matrix II题目描述和难度题目描述:编写一个高效的算法来搜索 m x n 矩阵中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。例如,给定以下矩阵 matrix :[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19...原创 2018-07-18 12:28:28 · 368 阅读 · 0 评论 -
LeetCode 题解之 205. Isomorphic Strings
205. Isomorphic Strings题目描述和难度题目描述:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: ...原创 2018-07-18 08:40:03 · 492 阅读 · 0 评论 -
LeetCode 题解之 515. Find Largest Value in Each Tree Row
515. Find Largest Value in Each Tree Row题目描述和难度题目描述:您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]题目难度:中等。英文网...原创 2018-06-30 23:27:58 · 307 阅读 · 0 评论 -
LeetCode 题解之 693. Binary Number with Alternating Bits
693. Binary Number with Alternating Bits题目描述和难度题目描述:给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。示例 1:输入: 5输出: True解释:5的二进制数是: 101示例 2:输入: 7输出: False解释:7的二进制数是: 111示例 ...原创 2018-06-30 23:18:25 · 369 阅读 · 0 评论 -
LeetCode 题解之 27. Remove Element
27. Remove Element题目描述和难度题目描述:给定一个数组 nums&nbsp;和一个值 val,你需要原地移除所有数值等于&nbsp;val&nbsp;的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 n...原创 2018-06-24 22:01:51 · 499 阅读 · 0 评论 -
LeetCode 题解之 26. Remove Duplicates from Sorted Array
26. Remove Duplicates from Sorted Array题目描述和难度题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新...原创 2018-06-24 22:00:40 · 670 阅读 · 0 评论 -
LeetCode 题解之 435. Non-overlapping Intervals
435. Non-overlapping Intervals题目描述和难度题目描述:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: ...原创 2018-06-24 21:58:48 · 685 阅读 · 0 评论 -
LeetCode 题解之 204. Count Primes
204. Count Primes题目描述和难度题目描述:统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。题目难度:简单。英文网址:204. Count Primes 。中文网址:204. 计数质数 。思路分析求解关...原创 2018-06-23 10:06:36 · 372 阅读 · 0 评论 -
LeetCode 题解之 209. Minimum Size Subarray Sum
209. Minimum Size Subarray Sum题目描述和难度题目描述:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的子数组。如果不存在符合条件的子数组,返回 0。示例: 输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 ...原创 2018-06-22 18:43:47 · 827 阅读 · 0 评论 -
LeetCode 题解之 26. Remove Duplicates from Sorted Array
26. Remove Duplicates from Sorted Array题目描述和难度题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新...原创 2018-06-21 22:21:19 · 336 阅读 · 0 评论 -
LeetCode 题解之 27. Remove Element
27. Remove Element题目描述和难度题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 n...原创 2018-06-21 21:56:12 · 346 阅读 · 0 评论 -
LeetCode 题解之 5. Longest Palindromic Substring(最长回文子串)
5. Longest Palindromic Substring题目描述和难度题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"题目难度:中等。英文网址:5....原创 2018-06-21 21:29:29 · 584 阅读 · 0 评论 -
LeetCode 题解之 300. Longest Increasing Subsequence(最长上升子序列 LIS)
300. Longest Increasing Subsequence题目描述和难度题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。...原创 2018-06-21 12:28:24 · 4985 阅读 · 4 评论