编程之美
文章平均质量分 74
zhanghaotian2011
这个作者很懒,什么都没留下…
展开
-
求两个链表的第一个节点
参考编程之美的第三章 234页。 如果离链表有环的话,有环的节点肯定是共同的节点,通过标志位找环的节点或者通过链长度n以及循环的第n+1个节点肯定是第一个节点,然后用这个节点在第二个链中去遍历。 剑指offer上的193页,面试题37 方法2:标记已经访问的节点 首先对每个节点添加一个标志位bVisited,表示这个节点有没有被访问过,初始为fals原创 2013-04-24 14:49:49 · 905 阅读 · 0 评论 -
优化斐波那契
#include using namespace std; int Fibonacci(int n); int main(){ cout<< Fibonacci(10)<<endl; system("pause"); return 0; } int Fibonacci(int n) { long t, r;原创 2013-04-25 17:12:31 · 1075 阅读 · 0 评论 -
2.13子数组最大乘积
问题: 给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组。 解法一: 采用空间换时间的策略,用两个数组分别记录原整数数组前缀与后缀的叠乘积(前缀s[i]=),再以间隔1个数的方式将这两个数组乘起来就得到所有n-1个数的乘积数组(具体看代码)。 [cpp] #include #include using namespace原创 2013-04-25 21:27:37 · 649 阅读 · 0 评论 -
求数组中最长递增子序列
问题: 求一个一维数组中最长递增子序列的长度。 解法1: 很明显用动态规划的算法,选取下面的阶段(这种选法极为常见),可使阶段间的关系具有无后效性。 阶段:在所有以元素k结尾的子数组中,选出其中的最长递增子序列,k=1,2...n。 状态:以元素k结尾的最长递增子序列中只有一个最长的递增子序列。 决策:决定元素k结尾的最长递增子序列有k-1种获取的途径,前面以任何一个元素结尾的最长原创 2013-04-26 15:17:56 · 2007 阅读 · 0 评论