算法
hhfwn
这个作者很懒,什么都没留下…
展开
-
数组最大子序列和问题
问题描述:最大子序列 给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大。例如: 整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21,子序列起始下标为1,结束下标为8。 复杂度:O(n) // return 子序列最大和,start 为子序列的开始下标,e原创 2012-08-28 20:46:45 · 623 阅读 · 0 评论 -
字符串模式匹配
public class StringMatching { public int[] fail = null;//失败函数 //fail[j]只和模式的前j个字符构成有关,而与目标字符串无关 //fail[j]={k, 若k为满足:o<=k<j,且p0p1...pk = pj-k=j-k+1....pj的最大整数 //........{...若k找不到,则=-1; public in原创 2012-08-31 09:34:11 · 364 阅读 · 0 评论 -
寻找链表倒数第K个结点
//p1开始就遍历,当p1计数到第K个结点的时候,p2开始遍历,当p1到表尾时,p2为所求结点 Node findLastKNode(Node head, int k){ Node p1,p2; p1 = head; p2 = head; int count = 0; while (p1 != null) {原创 2012-08-28 21:26:40 · 1275 阅读 · 0 评论 -
数组向左移K位
例 char str[ ] = a b c d e f g h i j k ;向左移K位:假设K=3方法:1:第K位(包括第K位)之前的逆序,之后的逆序 a b c | d e f g h i j k 各自逆序得到:c b a | k j i h g f e d 2:总体合一块逆序:c b a | k j i h g f e d 逆序得到:d e f g h i j原创 2012-09-19 17:48:26 · 1431 阅读 · 0 评论 -
圆圈中最后剩下的数字
分析: 我们试着从数学上分析出一些规律。首先定义最初的n个数字(0,1,…,n-1)中最后剩下的数字是关于n和m的方程为f(n,m)。在这n个数字中,第一个被删除的数字是m%n-1,为简单起见记为k。那么删除k之后的剩下n-1的数字为0,1,…,k-1,k+1,…,n-1,并且下一个开始计数的数字是k+1。相当于在剩下的序列中,k+1排到最前面,从而形成序列k+1,…,n-1,0,…k-1。该原创 2012-09-19 19:47:18 · 1194 阅读 · 0 评论