2014.07.07 16:46简介: 对于比较小的正整数n,我们习惯用逐个整除的方法检验n是否为质数。这种算法的复杂度是O(n^0.5)。对于int范围内的整数(最大是2147483647),开方以后不到五万,对于单次计算几乎是一瞬间完成,因此可以接受。但如果n是一个大数,比如10^100,这种....
分类:
编程语言 时间:
2014-07-09 00:49:12
阅读次数:
269
题目
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
解答
首先要注意空链表不成环;不能开额外的空间,即空间复杂度是o(1),可采用“快慢指针”查检查链表是否含有环,如果在快的指针能够追上慢的指针,则有环,否...
分类:
其他好文 时间:
2014-07-08 19:17:47
阅读次数:
160
1 常规判定方法
素数判定问题就是对给定的正整数n判定是否为素数。所谓素数,是指恰好有2个约数的整数。因为n的约数都不超过n,所以只需要检查2~n-1的所有整数是否整除n就能判定是不是素数。不过,我们还能进一步优化。如果d是n的约数,那么n/d也是n的约数。由n=d*n/d可知min(d,n/d),所以只需要检查2~的所有整数就足够了。此时,素数判定的复杂度为O()。代码实现如下:...
分类:
其他好文 时间:
2014-07-08 16:00:24
阅读次数:
309
一、 快速排序的描述
1、 快速排序是一种原地排序的算法,最坏情况下的时间复杂度为Θ(n^2),期望的运行时间为Θ(n logn),且其中隐含的常数因子较小。
2、 快速排序分三个步骤:
分解:数组A[p...r]被划分成两个数组A[p...q-1]和A[q+1...r],使得A[p...q-1]中的元素都小于等于A[q],A[q+1...r]中的元素都大于等于A[q]。下标q在这个划分过程...
分类:
其他好文 时间:
2014-07-08 15:31:28
阅读次数:
203
最近又重新学习了KMP算法,相比一般的暴力搜索,其对于“搜索陷阱”进行了优化处理。从而降低了时间复杂度。该算法最酷的地方在于准确找到了“搜索陷阱”的模板(or规律)。从而进行了特殊处理。...
分类:
其他好文 时间:
2014-07-08 14:55:04
阅读次数:
209
之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。4 51 4 94 3 81 2 52 4 61 3 7第一行两个整数n m。n表示顶点个数(顶点编号为1~n),...
分类:
其他好文 时间:
2014-07-06 18:22:26
阅读次数:
154
最长单调递增子序列问题
题目:设计一个 O( n ^ 2 )复杂度的算法,找出由 n 个数组成的序列的最长单调递增子序列。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.i...
分类:
其他好文 时间:
2014-07-06 11:30:45
阅读次数:
176
题目:给你一个目标串,和一些模式串,问每个模式串是否在目标串中出现。
分析:字符串,AC自动机。一开始用KMP算法,TLE了才发现会超时,改用AC自动机;
直接利用AC自动机存储,查询即可,然后按顺序输出;
如果模式串中有重复的,直接利用并查集合并即可,朱旭判断父节点。
说明:╮(╯▽╰)╭计算复杂度时,数据组数被忽略了;注意初始化。
#i...
分类:
其他好文 时间:
2014-07-06 10:46:17
阅读次数:
224
数字在排序数组中出现的次数 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 统计一个数字在排序数组中出现的次数.通过折半查找, 找到首次出现的位置, 再找到末次出现的位置, 相减即可.时间复杂度O(logn).代码:/*
* main.cpp
*
* Created on: 2014.6.12
* Author: Spike
...
分类:
其他好文 时间:
2014-07-06 09:45:25
阅读次数:
177
这个题比较简单,好像也比较old,给定一个整数数组A,有N个元素,找到所有下标对(P,Q)满足 0 ≤ P ≤ Q 数据范围N [1..3*10^5]数组元素[-10^9, +10^9]要求时间复杂度O(N),空间复杂度O(N)。分析: 如果b[i] = max{a[i..N - 1]} ,则对每个i,我们找到最大的j,满足b[j]>=a[i],就可以了。这样做的目的是b,反映了后面还有没有比a...
分类:
其他好文 时间:
2014-07-06 08:30:20
阅读次数:
179