最近写了一道数组去重的题,手抖,紧张,没写好。后来写了一会儿觉得还挺有意义的。现在做一下记录
Test case
测试用例如下
import test from 'ava'
import unique from '../src/unique'
继续阅读 »
生成二叉树
type Node struct {
data string
left *Node
right *Node
}
nodeG := Node{data: "g", left: nil, right: nil}
nodeF := Node{data: "f", left: &nodeG, right: nil}
nodeE := Node{data: "e", left: nil, right: nil}
nodeD := Node{data: "d", left: &nodeE, right: nil}
nodeC := Node{data: "c", left: nil, right:
继续阅读 »
题目描述
给定一个已排序的单链表,去除单链表中的重复元素,只保留一个重复的元素,并且返回新的单链表。
例如:
给出1->1->2,你的函数调用之后必须返回1->2。
输入
一个已排序的单链表,例如1->1->2。
输出
返回1->2。
代码示例
``` java
/** 单链表定义
*
* @author: crane-yuan
* @date: 2016-9-17 下午12:11:13
*/
public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) {
val = x;
继续阅读 »
连连看是一种益智游戏,其核心算法是要在一个M * N的矩阵上找出两个点的“最短路径”,满足:1. 转弯数最少 2. 经过的点最少。谈到图的两点间最短路径,我们会想到用于无权图的广度优先搜索(BFS)和带权图的Dijkstra算法。那么对于连连看的M * N矩阵来说,究竟可以抽象成有权图呢还是无权图?如果有,权重又是什么呢?
继续阅读 »
算法原理
希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;最后增量为 1 ,这样记录移动次数大大减少,提高了排序效率。希尔排序对增量序列的选择没有严格规定。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
- 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位
算法思路:
1. 先取一个正整数 d1(d1 < n),把全部记
继续阅读 »
算法原理
快速排序是图灵奖得主 C. R. A. Hoare 于 1960 年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
利用分治法可将快速排序的分为三步:
在数据集之中,选择一个元素作为"基准"(pivot)。
所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。这个操作称为分区 (partition) 操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
对
继续阅读 »
关于最长上升子序列的O(N*logN)算法已经有不少文章表述,可惜大都不够“好”(甚至语焉不详):我认为“好”的算法描述不但应该清晰地说明计算步骤,更应该讲清思路——即,这个算法是怎样思考得出的。这种思考的过程和方式才是精华之处。我试图用我的理解对这个算法给出一个尽量“好”的推导和表述,使你我一样的普通人都可以理解它的思路。
继续阅读 »
问题
系统中的所有数据以block 存放: 每个block里:
有 n=1000万个文件, 已经排序好,
每个文件名长度平均l=512 Byte.
2个block中可能包含大量的重复文件, 这时我们需要找出这2个block, 将其合并,
以节省空间.
继续阅读 »
网上有很多关于KMP算法的文章。用google搜“kmp算法”,第一页的文章我都看过,唯一能看懂并看完的就只有阮一峰的这篇。
继续阅读 »
在时间序列中,我们需要基于该时间序列当前已有的数据来预测其在之后的走势,三次指数平滑(Triple/Three Order Exponential Smoothing,Holt-Winters)算法可以很好的进行时间序列的预测。
继续阅读 »