题目:在一个字符串(1。
思路:简单的哈希问题,char占一个字节,8位,最多表示256种字符。时间复杂度O(n),空间复杂度O(1),因为hash数组大小为常数256。只需要遍历一次字符串,然后遍历一次hash数组即可。
我的代码如下:
class Solution {
public:
int FirstNotRepeatingChar(string str...
分类:
其他好文 时间:
2015-08-08 12:12:35
阅读次数:
158
首先以求1000000以内的素数为例来探讨筛法
Eratosthenes筛法(埃拉托斯特尼筛法)时间复杂度:O(N*loglogN)
空间复杂度:O(N)代码:#include
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2015-08-08 00:06:15
阅读次数:
144
什么是bitsetbitset 是STL库中的二进制容器,根据C++ reference 的说法,bitset可以看作bool数组,但优化了空间复杂度和时间复杂度,并且可以像整形一样按位与或。使用方法申明bitset的申明要指明长度bitset bi这样就申明了一个长度为length的名叫bi的bi...
分类:
其他好文 时间:
2015-08-07 23:52:55
阅读次数:
298
一、可以使用排序的方式Java当中对于String,并没有实现相应的排序方法,如果需要对String当中的字符进行排序在需要进行转换,将String转化为char [], 再使用Arrays.sort()方法进行排序这样的时间复杂度是O(nlogn), 空间复杂度是O(1)二、如果需要更快的可以使用...
分类:
其他好文 时间:
2015-08-06 21:50:55
阅读次数:
105
快速排序时间复杂度最理想情况下为O(nlgn),最坏情况为O(n2)空间复杂度为O(1)
分类:
编程语言 时间:
2015-08-06 00:25:56
阅读次数:
150
编码实现环状单向链表(尾指针直接指向头指针,中间没有空节点),去除连续的重复元素的操作。
比如:1(头)->2->2->3->3->1->1(头) 去除以后的结果是1->2->3,注意头尾的1也要去掉一个。
//时间复杂度为O(N)
//空间复杂度为O(1)
//代码如下:
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-08-05 22:20:05
阅读次数:
110
??
题意:N座高楼,高度均不同且为1-N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数。
思路:一开始想的是dp,但是数据范围达到2000,空间复杂度无法承受。
考虑以最高的楼分界,左边有f-1个递增的楼,右边有b-1个递减的楼,考虑将剩下n-1楼分为f+b-2组,规定每组中最高的在最左边,那么只需要
再从n-1组选出f-1组放到左边即可。
现在解决将n-1...
分类:
其他好文 时间:
2015-08-05 20:29:16
阅读次数:
117
快速排序是相当重要的一种排序方法。它的特点有:1. 平均时间复杂度为O(nlogn),最坏时间复杂度为O(n^2)。2. 平均空间复杂度为O(logn),最坏空间复杂度为O(n)。3. 不稳定 快排的实现方法有多种,这里只列出常用的两种。单向扫描版:int partition(int arr[...
分类:
编程语言 时间:
2015-08-05 10:12:06
阅读次数:
134
归并排序(求逆序数)归并排序:递归+合并+排序时间复杂度:O(n logn)空间复杂度:O(n)用途:1.排序 2.求逆序对数DescriptionIn this problem, you have to analyze a particular sorting algorithm. The alg...
分类:
编程语言 时间:
2015-08-04 22:20:25
阅读次数:
113
前几天bestcode做到一道字符串的题目,需要O(n)的回文,正好看到网上的manacher算法,于是来学习一发
进入正题:
manacher算法
用法:一般用于求一个字符串的最大回文,操作过程中会记录以每个点为中心的回文半径,可用来进行其他操作
时间复杂度:O(n)
空间复杂度:记录字符串2*n,半径数组2*n
内容:
记p[i]为以i为中心的回文半径(a...
分类:
编程语言 时间:
2015-08-04 17:16:17
阅读次数:
194