字典树。
测试中有:aaaaaaaaaaa... 的输入,如果每个节点用定长数组存储孩子的话,那就是26^len的空间复杂度(len为输入的长度),内存会不够的。
所以用map保存其孩子。
代码:
#include
#include
#include
using namespace std;
class TrieNode
{
public:
// Initialize ...
分类:
其他好文 时间:
2015-07-27 21:05:26
阅读次数:
103
Given a singly linked list, determine if it is a palindrome.
Follow up:
Could you do it in O(n) time and O(1) space?
给定一个单链表,判断它的元素是否是回文。要求在O(n)的时间复杂度和O(1)的空间复杂度内求解。如果没有时间复杂度的限制,可以直接将链表反转再比较就...
分类:
其他好文 时间:
2015-07-27 16:20:55
阅读次数:
88
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:这道题的简单版本是除了一个数字之外,其他数字都出现了两次,这个很简单,将所有的数异或一遍就得到了那个数字。如果不考虑空间复杂度的话,通过hash表统计的方法可以得到这两个数字;但如果空间复杂度要求...
分类:
编程语言 时间:
2015-07-26 22:16:34
阅读次数:
169
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。解析:
方法一:
如果可以占用额外空间,可以不断的将数组中的数字压入hash-table,逐个的去hash-table中查找,如果找到则说明是有重复的。空间复杂度O(n),时间复杂度O(n)方法二:
但如果不能占用额外空间:...
分类:
编程语言 时间:
2015-07-26 11:16:48
阅读次数:
142
题目描述:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
例如:数组{3, 4, 5, 1 , 2} 是 数组{1,2,3,4,5}的一个旋转,该数组最小的数是1.
我们要做的就是找到这个旋转后数组的最小数。
解题思路:
思路1:直接遍历数组,找到最小的数,简单粗暴,时间复杂度O(n),空间复杂度O(...
分类:
编程语言 时间:
2015-07-25 12:27:56
阅读次数:
131
对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - 1) + F(n - 2),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围内的非负整数,请设计一个高效算法,计算第n项F(n)。第一个斐波拉契数为F(0) = 1。 给定...
分类:
其他好文 时间:
2015-07-24 22:26:20
阅读次数:
149
首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近...
分类:
其他好文 时间:
2015-07-24 17:41:49
阅读次数:
109
// 使用哈希方法,用set 记录所有出现过的数字,如果没有冲突,则包含重复的元素。// 事件复杂度为O(n),空间复杂度O(n)class Solution {public: bool containsDuplicate(vector& nums) { sets; ...
分类:
其他好文 时间:
2015-07-23 19:30:47
阅读次数:
122
一、直接插入排序稳定,时间复杂度:最好O(n)、最差O(n^2)、平均O(n^2)。空间复杂度O(1)void InsertSort(int L[], int n){ int i, j,key; for (i = 1; i= 0 && key =high+1;j--)//后移 //j >= low ...
分类:
编程语言 时间:
2015-07-22 22:06:11
阅读次数:
116
LeetCode原题和维基百科都有解释用到的Sieve of Eratosthenes算法。
该算法可在O(nloglogn)时间内,求出小于n的所有质数;空间复杂度为O(n).
随着n的增大,当空间有限时,维基百科还提出了一种分段筛选(segmented sieve)方法,在时间复杂度不变的情况下,将空间复杂度降为O(n^0.5).下面代码实现了常规筛选(regular sieve)方法:cl...
分类:
其他好文 时间:
2015-07-22 16:21:01
阅读次数:
122