数据结构
fool宋
Stay Hungry , Stay Foolish
展开
-
滚动数组(2)
使用范围:使用在递推或动态规划中 作用:节约空间 注意:时间上没什么优势 举例 1)作用在一维数组: 普通方法: int d[]=new int[100]; d[0]=1;d[1]=1; for(int i=2;i<100;i++) { d[i]=d[i-1]+d[i-2] } System.out.printf("%d",d[99]);转载 2013-11-20 21:07:17 · 909 阅读 · 0 评论 -
滚动数组
滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。 一个简单的例子: 斐波那契数列: 一般代码: #include #include using namespace转载 2013-11-20 20:58:58 · 993 阅读 · 0 评论 -
堆和栈的区别
主要的区别由以下几点: 1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同; 1.管理方式: 对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 2.空间大小: 一般来转载 2015-01-17 15:40:37 · 703 阅读 · 0 评论