题目要求:给出一个数组,只有一个数字出现一次,其他的都出现两次,找出那出现一次的数字,要求用线性的时间解出题目!
分析:因为题目要求的是用线性时间,所以类似于那种暴力解决的方法会超时,如下面这种:int singleNumber2(int *nums,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(nu...
分类:
其他好文 时间:
2015-06-02 18:03:54
阅读次数:
120
剑指offer面试题35,找出字符串中第一个没有重复出现的字符,即第一个只出现一次的字符这道题提出一个很通用的方法就是用数组实现简单的哈希表。看到这种方法的思路,瞬间想起了桶排序。其基本思路是,字符是长度为8的数据类型,因此所有字符的可能情况时256种,即每一位要么为0 要么为1可以将每个字符对应的...
分类:
编程语言 时间:
2015-06-02 13:21:53
阅读次数:
127
题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b‘。
思路:
我们可以定义哈希表的键值(Key)是字符的ASCII值,而值(Value)是该字符出现的次数。同时我们需要扫描两次字符串,第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加1。接下来第二次扫描的时候,没扫描到一个字符就能在哈希表中得到该字符出现的次数。找出第一个Val...
分类:
其他好文 时间:
2015-05-29 13:56:55
阅读次数:
95
set,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序。头文件:#include常用的函数:begin() 返回set容器的第一个元素end() 返回set容器的最后一个元素clear() 删除set容器中的所有的元素empty(...
分类:
其他好文 时间:
2015-05-28 23:05:20
阅读次数:
312
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上.....
分类:
其他好文 时间:
2015-05-28 23:03:55
阅读次数:
279
[cpp] view plaincopymap的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能 力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下m.....
分类:
其他好文 时间:
2015-05-28 14:02:12
阅读次数:
139
先预处理出两个个数组pre,next。pre[i]表示上一个与i位置数字相同的位置,若不存在则设为0;next[i]表示下一个与i位置数字相同的位置,若不存在则设为n+1。那么一个满足在区间[L,R]中只出现一次的数字,其pre[i]R。 这样我们可以先将pre进行排序,然后将pre可持久化,...
分类:
其他好文 时间:
2015-05-27 13:40:16
阅读次数:
119
设计思路: 因为水王的ID出现的次数大于一半,那么在所有ID中,以第一次ID为计数,对ID进行遍历,出现一次便加1,没有出现便减1,遍历结束后,如果小于零便换一个ID,依次对ID进行遍历,最终看见大于零的,便是水王的ID咯。。。代码: 1 #include 2 using namespace ...
分类:
其他好文 时间:
2015-05-22 11:19:50
阅读次数:
135
题目链接:
poj2337
题意:
给出一些字符串,问能否将这些字符串 按照 词语接龙,首尾相接 的规则 使得每个字符串出现一次
如果可以 按字典序输出这个字符串序列
解题思路:
1.将每个字符串的首尾单词理解为图中的点,将字符串理解为边构图
2根据入度出度判断是否能构成欧拉路径
3并查集判断连通性
4将所有字符串按字典序排...
分类:
其他好文 时间:
2015-05-19 16:44:54
阅读次数:
139
原文符号因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?有无量词问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次。非贪婪匹配贪婪匹配在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配string pattern1 = @"a.*c"; // .....
分类:
其他好文 时间:
2015-05-19 10:21:53
阅读次数:
119