- 博客(8)
- 收藏
- 关注
原创 将数组中的所有零移到数组末尾-代码实例
电面Bloomberg被问到算法的一个问题:将数组中的所有零移到数组末尾。 当时给了一个naive algorithm: 遍历整个数组,Detect到0然后就将0移动到最末尾,然后不断将后面的数向前移动。这个方法可行,但依次移动数组内部的内容很费操作数,并且当数组中有很多0的时候,这个方法就特别的低效率。 在电面后想到,为什么不直接移动非0的数! 优化算法:遍历数组,初始化cou
2014-03-25 01:56:02
5245
原创 递归倒转string-代码实例
#include #include using namespace std;string reverse ( string s ){ //For no input of string if( s.size() == 0 ) return s; //The base case of the recursion if( s.size() == 1
2014-03-15 04:35:36
972
原创 ATOI函数-代码实例
#include #include using std::cout;using std::endl;int Atoi(char *);int main(){ int num0,num1,num2; //Testing Positive String char str[] = "12345"; num0 = Atoi(str); //Testi
2014-03-14 09:11:27
824
原创 反转链表遍历算法-代码实例讲解
反转链表有几种方法,在这先介绍一种时间复杂度为O(n)的遍历算法。 反转链表就是让所有节点的链接反向:本指向下一个节点的指针指向上一个节点。因此:我们首先想到初始化一个当前指针cur指向与head指向相同的节点,cur=head;然后初始化一个prev=NULL, 此时我们就想让cur所指向节点的指针指向prev;因此, cur->next=prev但是当cur->next=pr
2014-03-06 03:46:56
1164
原创 非递归中序遍历二叉树-代码实例讲解
中序遍历递归方法:将root作为参数传入前序遍历函数,然后调用中序遍历函数,以root的左子树作为参数传入;显示数据(比如前序遍历树输出树里的数据)调用中序遍历函数,以root的右子树作为参数传入; 而在非递归调用中序遍历二叉树中,利用栈的LIFO的特点。因为中序遍历从二叉树最左的节点开始遍历,然后其父节点,最后父节点的右子树。因此算法为:1.1.初始化当前指针cur指向
2014-03-04 14:07:59
1316
原创 非递归前序遍历二叉树-代码实例讲解
前序遍历树递归调用并不算难,将root作为参数传入前序遍历函数,然后显示数据(比如前序遍历树输出树里的数据);调用前序遍历函数,以root的左子树作为参数传入;调用前序遍历函数,以root的右子树作为参数传入; 而如果要求用非递归调用前序遍历树,就需要引入stack-堆的运用,其实在递归调用算法中,stack也是存在的,只是是没有直接申明,递归的数据都会暂时存在stack中,
2014-03-03 11:00:21
1109
原创 STL中adapters—stack的基本用法
例程调用了deque(stack默认underlying data structure),vector, list三个first class containers来描述adapter stack, 并对不同数据结构的stack进行了分别的基本操作。/* Tranverse postOrder binary tree pesudocodes */#include #include
2014-03-03 04:34:20
657
原创 在一个数组中找到最大的两个数
在一个给定数组中找出最大的两个数:算法:预设两个最大数int 来存储数组中两个最大的数,保证max1在遍历数组过程中相比max2,一直是最大的。在遍历过程中数组中的其他数只与max2比较,小于max2时,取代max2,再与max1比较,后来再确保max1始终比max2大。时间复杂度O(n),线性!/* Try to find the 2 maximum number in an a
2014-02-28 10:43:43
1866
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人