随笔分类 -  leetcode

摘要:随机性问题 水塘抽样算法可保证每个样本被抽到的概率相等 使用场景:从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到主内存的情况 Knuth洗牌算法 拿起第i张牌时,只从它前面的牌随机选出j,或从它后面的牌随机选出j交换即可 阅读全文
posted @ 2019-07-24 18:54 demianzhang 阅读(300) 评论(0) 推荐(0)
摘要:大数乘法 string solve(string, string) 设置中间进位变量c和累加变量d(从上到下考虑,不用存储中间变量) 1 string multiply(string num1, string num2) { 2 int len1 = num1.size(); 3 int len2 阅读全文
posted @ 2019-02-23 20:58 demianzhang 阅读(656) 评论(0) 推荐(0)
摘要:题意:给一个按照升序排序的正整数数组。这个数组很大以至于只能通过固定的接口ArrayReader->get(k)来访问第k个数。并且也没有办法得知这个数组有多大。找到给出的整数target第一次出现的位置。你的算法需要在O(logk)的时间复杂度内完成,k为target第一次出现的位置的下标。如果 阅读全文
posted @ 2018-12-29 10:52 demianzhang 阅读(413) 评论(0) 推荐(0)
摘要:3. Max Points on a Line 共线点个数3种解法 思路一:思考如何确定一条直线,两点法,确定斜率后带入一点。有三种情况,1. 两点重合,2. 斜率不存在,3. 正常算,依次以每个点为过直线的点,map映射斜率个数。 思路二:后两种情况合并,用(dy/d, dx/d)表示,其中d=g 阅读全文
posted @ 2018-09-23 13:05 demianzhang 阅读(814) 评论(0) 推荐(0)
摘要:1. Best Time to Buy and Sell Stock 2. Best Time to Buy and Sell Stock II 3. Best Time to Buy and Sell Stock III 4. Best Time to Buy and Sell Stock IV 阅读全文
posted @ 2018-08-07 17:32 demianzhang 阅读(396) 评论(0) 推荐(0)
摘要:树结点结构体: 因为在后序遍历中,要保证左孩子和右孩子都已被访问并且左孩子在右孩子前访问才能访问根结点 第一种: 对于任一结点P,将其入栈,然后沿其左子树一直往下搜索,直到搜索到没有左孩子的结点,此时该结点出现在栈顶,但是此时不能将其出栈并访问,因此其右孩子还为被访问。所以接下来按照相同的规则对其右 阅读全文
posted @ 2017-12-26 14:42 demianzhang 阅读(5738) 评论(1) 推荐(1)
摘要:LeetCode148 SortList 题意:给定一个链表,要求用O(n log n) 的复杂度进行排序。 直观的链表归并排序: 快速排序,因为是链表不能用下标快速访问,挖坑法不适用,这里采用《算法导论》中的单向双指针法,end记录边界不采用None截断 阅读全文
posted @ 2017-11-25 16:40 demianzhang 阅读(757) 评论(0) 推荐(0)
摘要:两个有序的数组 nums1 和 nums2 维数分别为m,n。找所有数的中位数,复杂度 O(log (m+n)) 注意:奇偶个数,分治法求解,递归出口特殊处理。取Kth smallest数时,分治取mid=k/2和k-mid,避免奇数造成影响。 阅读全文
posted @ 2017-10-09 18:27 demianzhang 阅读(242) 评论(0) 推荐(0)
摘要:LeetCode 39 LeetCode 40 LeetCode 22 backtracking函数书写的一般规则: (1)函数参数一般要包括位置或者其它(如本题中的还可以剩余左括号个数及左边有多少个左括号没有关闭),这些都是为函数内容作为判断条件,要选择好。 (2)函数开头是函数终止条件(如本题中 阅读全文
posted @ 2016-10-14 23:14 demianzhang 阅读(344) 评论(0) 推荐(0)