随笔分类 -  algorithms

摘要:Problem Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum 阅读全文
posted @ 2020-04-19 13:10 凌雨尘 阅读(112) 评论(0) 推荐(0)
摘要:Search in Rotated Sorted Array Problem Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time c 阅读全文
posted @ 2020-04-12 12:47 凌雨尘 阅读(162) 评论(0) 推荐(0)
摘要:Problem Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a t 阅读全文
posted @ 2020-04-05 22:06 凌雨尘 阅读(218) 评论(0) 推荐(0)
摘要:排序 基本概念 稳定性:稳定性是指两个相同的值,排序前后的顺序保持不变,即该排序算法是稳定的 衡量标准:时间复杂度、空间复杂度 内部排序 插入排序:直接插入排序、折半插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序 基数排序 外部排序 多路归并排序 注:基于 阅读全文
posted @ 2020-03-22 14:01 凌雨尘 阅读(176) 评论(0) 推荐(0)
摘要:Problem A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ num[i+1], find a peak element and returni 阅读全文
posted @ 2020-03-08 12:22 凌雨尘 阅读(169) 评论(0) 推荐(0)
摘要:Problem Write an efficient algorithm that searches for a value in an m x n matrix, return the occurrence of it. This matrix has the following properti 阅读全文
posted @ 2020-02-16 20:37 凌雨尘 阅读(133) 评论(0) 推荐(0)
摘要:Problem Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are 阅读全文
posted @ 2020-02-16 20:25 凌雨尘 阅读(136) 评论(0) 推荐(0)
摘要:Problem Given a sorted array of n integers, find the starting and ending position ofa given target value. If the target is not found in the array, ret 阅读全文
posted @ 2020-01-12 15:47 凌雨尘 阅读(143) 评论(0) 推荐(0)
摘要:一、定义 本福特定律,也称为本福德法则,说明一堆从实际生活得出的数据中,以1为首位数字的数的出现机率约为总数的三成,接近期望值1/9的3倍。推广来说,越大的数,以它为首几位的数出现的机率就越低。它可用于检查各种数据是否有造假。[1] 二、数学 本福特定律说明在b进位制中,以数n起头的数出现的概率为 阅读全文
posted @ 2019-12-22 12:30 凌雨尘 阅读(2754) 评论(0) 推荐(0)
摘要:问题: 奇偶判断 思路: 使用 & 进行奇偶判断,比直接使用 % 高效很多 实现: C++: 输出: 分析: 先了解下位运算符 & ,两个数用 & 进行位运算,本质上就是两个数的2进制运算,在运算过程中,只有 1 & 1 的结果是1,其他结果都是 0,如图: 1的2进制是 0000 0001,任何数 阅读全文
posted @ 2019-08-30 17:38 凌雨尘 阅读(395) 评论(0) 推荐(0)
摘要:问题: 找出字符串中的最长回文子串 思路: 举例分析下,例如 ”abadaba“ 这个字符串的计算 1、从左往右遍历,整个字符串,把每个字符和字符间的空隙当作回文的中心,然后向两边扩展来找到最长回文串,这种情况下默认得对每一个字符进行计算,计算量比较大,而且有部分计算其实能通过之前的计算得到答案,后 阅读全文
posted @ 2019-08-29 18:10 凌雨尘 阅读(1311) 评论(0) 推荐(0)
摘要:简介: Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。 思路: Sunday 算法  阅读全文
posted @ 2019-08-27 18:35 凌雨尘 阅读(1200) 评论(0) 推荐(0)
摘要:Problem For a given sorted array (ascending order) and a target number, find thefirst index of this number in O(log n) time complexity. If the target 阅读全文
posted @ 2019-07-23 20:19 凌雨尘 阅读(263) 评论(0) 推荐(0)
摘要:最小生成树 所谓最小生成树,就是一个图的极小连通子图,它包含原图的所有顶点,并且所有边的权值之和尽可能的小。 首先看看第一个例子,有下面这样一个带权图: 它的最小生成树是什么样子呢?下图绿色加粗的边可以把所有顶点连接起来,又保证了边的权值之和最小: 去掉那些多余的边,该图的最小生成树如下: 下面我们 阅读全文
posted @ 2019-07-11 18:20 凌雨尘 阅读(2871) 评论(3) 推荐(1)
摘要:找第 K 大数,基于比较的排序的方法时间复杂度为 O(n), 数组元素无区间限定,故无法使用线性排序。由于只是需要找第 K 大数,这种类型的题通常需要使用快排的思想解决。Quick Sort 总结了一些经典模板。这里比较基准值最后的位置的索引值和 K 的大小关系即可递归求解。 JAVA: 源码分析 阅读全文
posted @ 2019-05-22 14:22 凌雨尘 阅读(396) 评论(0) 推荐(0)
摘要:将数组中的奇数和偶数分开,使用『两根指针』的方法最为自然,奇数在前,偶数在后,若不然则交换之。 JAVA: 源码分析 注意处理好边界即循环时保证left < right. 复杂度分析 遍历一次数组,时间复杂度为 O(n), 使用了两根指针,空间复杂度 O(1). 阅读全文
posted @ 2019-04-16 17:15 凌雨尘 阅读(181) 评论(0) 推荐(0)
摘要:寻找未排序数组的中位数,简单粗暴的方法是先排序后输出中位数索引处的数,但是基于比较的排序算法的时间复杂度为 O(nlogn), 不符合题目要求。线性时间复杂度的排序算法常见有计数排序、桶排序和基数排序,这三种排序方法的空间复杂度均较高,且依赖于输入数据特征(数据分布在有限的区间内),用在这里并不是比 阅读全文
posted @ 2019-04-09 10:05 凌雨尘 阅读(644) 评论(0) 推荐(0)
摘要:此题要求返回新数组。由于可以生成新数组,故使用常规思路按顺序遍历即可。 C++: JAVA: 源码分析 分三步走,后面分别单独处理剩余的元素。 复杂度分析 遍历 A, B 数组各一次,时间复杂度 O(n), 空间复杂度 O(1). Challenge 两个倒排列表,一个特别大,一个特别小,如何 Me 阅读全文
posted @ 2019-04-02 11:12 凌雨尘 阅读(200) 评论(0) 推荐(0)
摘要:因为本题有 in-place 的限制,故必须从数组末尾的两个元素开始比较;否则就会产生挪动,一旦挪动就会是 O(n^2) 的。自尾部向首部逐个比较两个数组内的元素,取较大的置于数组 A 中。由于 A 的容量较 B 大,故最后 m == 0 或者 n == 0 时仅需处理 B 中的元素,因为 A 中的 阅读全文
posted @ 2019-03-25 10:42 凌雨尘 阅读(161) 评论(0) 推荐(0)
摘要:在上题基础上加了限制条件元素最多可重复出现两次。~~因此可以在原题的基础上添加一变量跟踪元素重复出现的次数,小于指定值时执行赋值操作。但是需要注意的是重复出现次数occurence的初始值(从1开始,而不是0)和reset的时机。~~这种方法比较复杂,核心思想仍然是两根指针,只不过此时新索引自增的条 阅读全文
posted @ 2019-03-14 10:41 凌雨尘 阅读(131) 评论(0) 推荐(0)