摘要:
转自:http://blog.csdn.net/qinghezhen/article/details/9116053C++内存分配由五个部分组成:栈、堆、全局代码区、常量区、程序代码区。如下图所示:1、栈区:函数中定义的局部变量放在栈中,函数执行结束时存储单元自动释放。栈内存分配一般采用寄存器来存取,存取效率高但是内存容量有限。2、堆区:通常在堆中进行动态分配。程序运行的时候用new或malloc申请一定大小的内存,用delete或free释放之前申请的内存。不管内存空间在何时申请,只要没有用delete或free释放该内存空间就一直被占用着。也就是说,动态内存分配的变量的生存周期由程序员自己 阅读全文
posted @ 2013-11-23 23:26
myLittleGarden
阅读(640)
评论(0)
推荐(0)
摘要:
字符串移位包含的问题(编程之美 p221-223) 问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。 解法一:从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性。字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m),总体复杂度为O(n*n*m)。字符串包含判断,若采用KMP算法,时间复杂度为O(n),这样总体的复杂度为O(n*... 阅读全文
posted @ 2013-11-23 18:54
myLittleGarden
阅读(422)
评论(0)
推荐(0)
摘要:
如图1所示,有一条单链表,其节点除了有next指针外,还有一个random指针。random指针可指向单链表中的任意节点,包括它自身。random指针一旦指定,便不再更改。请设计算法,复制此单链表,并给出时间复杂度。 图1 带有random指针的单链表 解法1. 时间复杂度为O(n*n) 先按nex 阅读全文
posted @ 2013-11-23 18:09
myLittleGarden
阅读(1370)
评论(0)
推荐(0)