上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 58 下一页
  2013年9月12日
摘要: 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。 看到这个题目,我们首先应该想到的是原来一个空格字符,替换之后变成'%'、'2'和'0'这3个字符,因此字符串会变长。如果是在原来的字符串上做替换,那么就有可能覆盖修改在该字符串后面的内存。如果是创建新的字符串并在新的字符串上做替换,那么我们可以自己分配足够多的内存。 在这里介绍一种时间复杂度为O(n)的解法。 我们可以先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串 阅读全文
posted @ 2013-09-12 14:58 猿人谷 阅读(2704) 评论(7) 推荐(2) 编辑
  2013年9月11日
摘要: 转自:http://www.cnblogs.com/graphics/archive/2010/06/01/1749569.html简介set是一种随机存储的关联式容器,其关键词(key)和元素(value)是同一个值。set之中所有元素互不相同。set是通过二叉查找树来实现的。创建创建一个空的set 1: set s0 ;创建一个带大于比较器的set, 默认是小于比较器less 1: set> s1 ;用数组初始化一个set 1: int a[3] = {1, 2, 3} ; 2: set s2(a, a + 3) ;用拷贝构造函数初始化set 1: set s1 ; 2: se... 阅读全文
posted @ 2013-09-11 11:36 猿人谷 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。需要包含头文件:#include set和multiset都是定义在std空间里的类模板:[cpp] view plaincopyprint?template,class_Alloc=allocator>classsettemplate, class _Alloc = allocator >class set[cpp] view plaincopyprint?template,class_Alloc=allocator>classmultis 阅读全文
posted @ 2013-09-11 11:01 猿人谷 阅读(703) 评论(0) 推荐(0) 编辑
  2013年9月10日
摘要: 来源:http://www.cnblogs.com/ider/archive/2012/04/01/binary_search.html在学习算法的过程中,我们除了要了解某个算法的基本原理、实现方式,更重要的一个环节是利用big-O理论来分析算法的复杂度。在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度。时间复杂度按优劣排差不多集中在:O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n)到目前位置,似乎我学到的算法中,时间复杂度是O(log n),好像就数二分查找法,其他的诸如排序算法都是 O(n log n)或者O(n2)。但是也正 阅读全文
posted @ 2013-09-10 22:03 猿人谷 阅读(1182) 评论(0) 推荐(0) 编辑
摘要: 主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。#include #include using namespace std;template struct ArraySizeHelper {char _[N];};template ArraySizeHelper makeArraySizeHelper(T(&)[N]);#define ARRAY_SIZE(a) sizeof(makeArraySizeHelper(a))bool valid_permutation(const int *queen, int len){ bool . 阅读全文
posted @ 2013-09-10 15:48 猿人谷 阅读(398) 评论(0) 推荐(0) 编辑
  2013年9月9日
摘要: 以后慢慢启用个人博客:http://www.yuanrengu.com 位运算 位运算是把数字用二进制表示之后,对每一位上0或者1的运算。 理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。在程序员的圈子里有一个流传了很久的笑话,说世界上有1 阅读全文
posted @ 2013-09-09 22:36 猿人谷 阅读(4941) 评论(2) 推荐(4) 编辑
摘要: 反转一个无符号整数的比特位.Reverse the bits of an unsigned integer.For example, x is 0x00001234, then reverse(x) is 0x2C480000.static uint Reverse(uint x){ uint y = 0; for (int i = 0; i >= 1; } return y;}删除数组中的重复元素void remove_duplicate(int *a, int len){ int i = 0; int j = 0; for (j = 0; j 0 && key > 阅读全文
posted @ 2013-09-09 16:27 猿人谷 阅读(1557) 评论(0) 推荐(0) 编辑
摘要: 题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。函数的声明如下:void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted);分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。注意函数的第一个参数pListHead是一个指向指针的指针。例如,当我们往一个空链表中插入一个结点时,新插入的结点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然是一个空指针。在链表中删除一 阅读全文
posted @ 2013-09-09 11:48 猿人谷 阅读(784) 评论(0) 推荐(0) 编辑
  2013年9月8日
摘要: 将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开?需要调整元素的顺序。先判断数组中的一个元素的奇偶性,如为奇数就往后移。如何判断一个元素的奇偶性?[cpp] view plaincopy//判断元素的奇偶性boolisEven(intdata){return((data&1)==0?true:false);}测试如下:[cpp] view plaincopy#include//判断元素的奇偶性boolisEven(intdata){return((data&1)==0?true:false);}intmain(){inti=3;if(isEven(i)){print 阅读全文
posted @ 2013-09-08 15:02 猿人谷 阅读(1756) 评论(0) 推荐(0) 编辑
  2013年9月6日
摘要: 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定 阅读全文
posted @ 2013-09-06 17:14 猿人谷 阅读(475) 评论(0) 推荐(1) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 58 下一页