![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
亦步亦趋
文章平均质量分 75
jakiechen68
我爱web开发!
展开
-
重建二叉树
对于一颗二叉树,可以根据先序遍历(后序遍历)和中序遍历重新还原出二叉树。 根据先序遍历和中序遍历还原二叉树的主要思想: 1、先序遍历序列的第一个元素必定是根节点,可以由此获取二叉树的根节点。 2、根据根节点,在中序遍历序列中查找该节点,由中序遍历的性质可知,中序遍历中该根节点左边的序列必定在根节点的左子树中,而根节点右边的序列必定在右子树中。由此可以知道先序遍历中左子树以及右子树的起止位置。原创 2013-05-25 19:37:29 · 3812 阅读 · 0 评论 -
替换字符串中的所有空格
要替换一个字符串中的所有空格,一种想法是开辟一个新的字符数组,然后对字符串进行遍历,若遇到普通字符,则将字符拷贝到新数组中,若遇到空格,则直接跳过或进行替换。这种方法需要使用额外的空间。 如果已知原字符串中有足够的空间容纳替换,且不允许使用额外的数组空间,则可以先遍历一遍字符串,统计空格总数,由此可以计算出替换后的字符串新长度,然后用一个指针指向新的字符串尾部,然后从尾部拷贝字符串,若遇到空格,原创 2013-05-25 19:47:01 · 2256 阅读 · 0 评论 -
字符串按特定分隔符反转
阿里巴巴的实习生笔试题,实现将字符串按特定分隔符进行反转,如“www.taobao.com”,反转后为"com.taobao.www",要求时间复杂度为O(n),空间复杂度为O(1). 解题思想:用两个指针记录分隔符之间的子字符串,然后先将子字符串进行反转,逐段全部反转后,再将整个字符串进行一次反转。 #include #include using namespace std;原创 2013-05-25 19:24:39 · 1234 阅读 · 0 评论 -
实现一个singleton
#include #include using namespace std; template class singleton { public: static T* GetInstance() { if(pInstance == NULL) /*check the first time*/ {原创 2013-05-25 19:54:45 · 388 阅读 · 0 评论 -
二分查找
#include #include using namespace std; int binary_search(int Array[], int n, int value) { int *pStart = Array; int *pEnd = Array+n-1; if(Array == NULL) return -1; while(pSt原创 2013-05-25 20:18:31 · 384 阅读 · 0 评论 -
冒泡排序、快速排序
#include #include using namespace std; /*buble search*/ int bubleSort(int Array[], int n) { if(Array == NULL) return -1; for(int i=0; i<n-1; i++) { for(int j=i; j<n; j+原创 2013-05-25 20:24:59 · 408 阅读 · 0 评论 -
走迷宫
#ifndef __MAZE_H__ #define __MAZE_H__ #include #include #include #include #include /*=========================*/ void printMaze(); /*=========================*/ enum{MAZE_ROW = 20, MAZE_COL = 2原创 2013-05-25 20:15:15 · 425 阅读 · 0 评论 -
有序数组合并
假设sz1和sz2是有序数组,同时sz1有足够的空间容纳sz2,要实现sz1和sz2的合并,不允许开辟新的数组空间,同时要求时间复杂度为O(n),空间复杂度为O(1). 同样采用尾指针的方法: #include #include using namespace std; void paixu(int sz1[], int len_sz1, int sz2[], int len_原创 2013-05-25 19:59:33 · 454 阅读 · 0 评论 -
求最大连续子数组的和
一个整型数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。 例如输入的数组为1,-2,3,10,-4,7,2,-5,那么最大的子数组为3,10,-4,7,2,因此输出为该子数组的和18。 原先自己实现了一个很复杂的程序,思路虽然也是分段处理,之中用到了几个变量,处理起来感觉很难受。 昨晚在《编程原创 2013-06-06 11:24:26 · 1632 阅读 · 0 评论