Algorithm
文章平均质量分 78
Firehotest
这个作者很懒,什么都没留下…
展开
-
【Algorithm】 Reservoir Sampling & Shuffle an Array
Reservoir Sampling Example Question:Randomly choosingksamples from a list ofnitems,wherenis either a very large or unknown number. Typicallynis large enough that the list doesn’t fit in...原创 2020-04-12 08:34:05 · 327 阅读 · 0 评论 -
Algorithm: DP (II): 求Maximum 问题 关键在于每一步的全局最优的选择关于做和不做(做则代表当前local的最优 > 不做的全局最优)
1235.Maximum Profit in Job SchedulingWe havenjobs, where every jobis scheduled to be done fromstartTime[i]toendTime[i], obtaining a profitofprofit[i].You're given thestartTime,endTi...原创 2019-11-21 14:32:16 · 335 阅读 · 0 评论 -
Algorithm: Backtracking (回溯) 通常用于暴力列举、排列组合灯,注意 Pruning以优化 (LC 1240)
LC 1240Tiling a Rectangle with the Fewest SquaresGiven a rectangle of sizenxm, find the minimum number of integer-sided squares that tile the rectangle.Example 1:Input: n = 2, m = 3Outp...原创 2019-11-17 03:48:07 · 277 阅读 · 0 评论 -
Algorithm: 计算类题目归类整理
提纲:166. Fraction to Recurring Decimal43. Multiply Strings415. Add Strings67. Add Binary(思路和模板与上一题相同)371. Sum of Two Integers(用位操作来代替实际的加减)下面两题思路一样(找到第一个非9的数,接着执行相应的操作):66. Plus One369. Plus One Linked...原创 2018-03-25 03:10:58 · 932 阅读 · 0 评论 -
Algorithm: 有趣的动态规划
前一阵子,看了一篇对Best time buy and sell stock的动态规划总结。作者把动态规划的本质用一句话描述:定义状态,状态数组的维数由决定状态的因素构成(多少个因素就是多少维)。动态规划是bottom - top的方法,而备忘录法 (memorization)则是top - bottom的方法。动态规划常见的降维方法是:滚动数组。备忘录法例子:361. Bomb Enemy备忘录...原创 2018-03-25 09:20:07 · 540 阅读 · 0 评论 -
Algorithm: 数组类细节题
提纲:163. Missing Ranges228. Summary Ranges56. Merge Intervals57. Insert Interval163. Missing RangesGiven a sorted integer array where the range of elements are in the inclusive range原创 2018-03-26 02:55:19 · 281 阅读 · 0 评论 -
Algorithm: General细节实现
提纲:157. Read N Characters Given Read4158. Read N Characters Given Read4 II - Call multiple times157. Read N Characters Given Read4The API: int read4(char *buf) reads 4 characters at a time from a file...原创 2018-03-26 03:48:59 · 257 阅读 · 0 评论 -
Algorithm: Union Find (并查集查找)
Union Find是基于disjoint set的原理去判断一个图中元素之间的连通性或者说关联性的方法。关于Disjoint Set的原理,可以参考这篇文章:https://blog.csdn.net/firehotest/article/details/53503624其中提到了,生成最小生成树的kruskal 算法是基于disjoint set的基础上的。disjoint set的基本操作就...原创 2018-04-10 08:43:04 · 652 阅读 · 0 评论 -
Algorithm: 数学基础在编程的应用(LC题目)
263. Ugly Number264. Ugly Number II313. Super Ugly Number263. Ugly NumberWrite a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only in...原创 2018-04-11 08:38:48 · 603 阅读 · 0 评论 -
Algorithm: Two pointers
双指针一般用两个用处:1)在排序的数组中,搜索target答案。或者在不能改变元素位置的追求最大或者最小的情况下,不用排序根据比大小追求答案(LC11)。2) 在链表当中确定某个元素的位置。数组搜索:11. Container With Most Water15. 3Sum16. 3Sum Closest26. Remove Duplicates from Sorted Array(这题的原理就是...原创 2018-04-22 11:10:40 · 314 阅读 · 0 评论 -
Algorithm: Binary Search
Binary Search是对于sorted或者部分sorted,能找到大小关系可以使搜索朝着“正确”方向前进的,省掉了不正确方向的搜索。所以是每次搜索都是logn的复杂度。如果需要遍历n个元素,则是O(nlogn)的复杂度。4. Median of Two Sorted Arrays33. Search in Rotated Sorted Array34. Search for a Range4...原创 2018-04-26 12:28:34 · 366 阅读 · 0 评论 -
Algorithms: Bit Manipulation(位操作)
位操作在编程语言中,支持以下四种逻辑操作:与(&), 或(|), 非(~)和异或(^)。而在Java当中,移位操作包括:> 带符号右移, >>>忽略符号位,空位补0.注意,在Java中,& > ^ > | 位运算符的优先级是比 ==, !=两个逻辑运算符低。但比&&和||高。所以记得加括号,必须要的时候。位运算常用的套路:1) 设置一个位:A |= 1 2)原创 2017-10-01 01:31:40 · 804 阅读 · 0 评论 -
Data Structure: Segment Tree 线段树
线段树主要用于Range Query. 适用问题在:这个大区域的某个子区间最小值,这个大区间的某个子区间的和等等。线段树的某个叶子节点都是代表一个大区间的元素。为什么要使用线段树?那先让我们看看,如果不使用线段树,上述的求某个子区间最小值的问题该如何解决。方案1:每次query都去遍历一次子区间。如果有m次查询,有n个元素的话,时间复杂度就是O(mn)。原创 2017-09-29 12:02:29 · 480 阅读 · 0 评论 -
Algorithms: Squares Related Questions
367. Valid Perfect Square(理论:平方数可以表示为 1 + 3 + 5 + 7 ...;或者利用二分法看看最后的start或者end有没有平方后等于给定的数)279. Perfect Squares利用动态规划:一个长度为n + 1的数组,代表该数字 (0 - n)最少由多少个平方数乘积。dp[0] = 0. 其余初始化为Integer.MAX_VALU原创 2017-03-21 08:48:42 · 392 阅读 · 0 评论 -
Algorithms: Rectangle related Questions
子问题 I:储水问题11. Container With Most Water从两边用两个指针一直遍历到中间。理论上,两边拥有最长的长,高度由两边中的较低的边决定。关键是如何递增或递减。为了求最大的面积,当长度变小时,直觉上应该保留更长的边,将更小的边的index递增或者递减,才有可能更新面积。想明白以上,这道题就不难了。42. Trapping Rain Water原创 2017-03-21 11:15:08 · 430 阅读 · 0 评论 -
Algorithm: Binary Tree(1) -- Traversal Problems
对应着统计二叉树Binary Trees (Pre-order, In-order and Post-order) Traversal:See this article: http://blog.csdn.net/firehotest/article/details/58535905Binary Trees‘s Largest Depth:使用Div原创 2017-03-12 23:27:31 · 517 阅读 · 0 评论 -
Algorithm: Non - LeetCode Problems (Array)
List:Submatrix Sum ZeroSubmatrix Sum Zero给定一个整数矩阵,请找出一个子矩阵,使得其数字之和等于0.输出答案时,请返回左上数字和右下数字的坐标。样例给定矩阵[ [1 ,5 ,7], [3 ,7 ,-8], [4 ,-8 ,9],]返回 [(1,1), (2,2)]原创 2017-03-14 06:38:24 · 473 阅读 · 0 评论 -
Algorithm: String (1) 特殊的题目
6. ZigZag Conversion68. Text Justification71. Simplify Path214. Shortest PalindromeString ComparisonString Compression6. ZigZag ConversionThe string "PAYPALISHIRING" is w原创 2017-03-15 05:37:42 · 484 阅读 · 0 评论 -
Algorithm: Array(1)
54. Spiral Matrix59. Spiral Matrix II73. Set Matrix Zeroes54. Spiral MatrixGiven a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order原创 2017-03-15 07:08:20 · 576 阅读 · 0 评论 -
Algorithm: 如何判断一个点是否在一个三角形内
昨日因为机缘巧合,做了一道阿里的实习生编程题。题目很有趣,其中涉及到了如何判断一个点是否在一个三角形内。其中,判断这个问题最简单的方法是面积法。(图片来源:http://www.cnblogs.com/TenosDoIt/p/4024413.html)如果一个点在三角形内,其与三角形的三个点构成的三个子三角形的面积等于大三角形的面积。否则,大于大三角形的面积原创 2017-03-17 08:07:31 · 11679 阅读 · 0 评论 -
Data Structure: 图的拓扑排序
Course ScheduleThere are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is e...原创 2017-09-13 12:21:39 · 383 阅读 · 0 评论 -
Data Structure: Trie(字典树)
字典树是一个用数组(数组代表子节点数目是静态的)来表示子节点的树结构。同时节点也需要域:boolean isEnd。 本文章参考:https://leetcode.com/problems/implement-trie-prefix-tree/solution/Trie的一些应用:1)Autocomplete; 2) Spell checker; 3) IP routing原创 2017-09-10 03:02:17 · 746 阅读 · 0 评论 -
Algorithm: Binary Tree(2) -- Special Trees (BST and Balanced Tree)
判断一棵二叉树是否是平衡二叉树类似问题:判断一棵树是否是二叉搜索树 (98. Validate Binary Search Tree)总体思路:平衡二叉树(左右子树的高度相差最多1):每个根节点,如果左子树是平衡的,且右子树是平衡的,而且两者高度相差小于1,则到current node是平衡二叉树。这里有个trick,用了返回高度的办法,如果是-1的话证明其中一棵子树不是平原创 2017-03-08 23:32:56 · 413 阅读 · 0 评论