2012年5月22日

院版每日一题(2) 数组乘积问题

摘要: 给定一个数组A,它有n个元素。现在需要构造一个也有n个元素的数组B,数组B中的元素定义如下:第i(i=0,1,2,...,n-1)个位置的元素是A中除位置i之外的其他n-1个数的乘积。 要求:1、不能用除法; 2、只能用额外的变量用作于迭代器。1 B[1]=A[0];2 for(int i=2;i<n;i++)3 B[i]=B[i-1]*A[i-1];4 B[0]=A[n-1];5 for(int i=n-2;i>0;i--){6 B[i]*=B[0];7 B[0]*=A[i];8 } 阅读全文

posted @ 2012-05-22 12:52 bingwenst 阅读(134) 评论(0) 推荐(0) 编辑

院版每日一题(1) 快速寻找满足条件的两个数

摘要: 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。假如有如下的两个数组:5,6,1,4,7,9,8给定Sum= 101,5,6,7,8,9给定Sum= 10学长整理大答案(厉害死了)解法一一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为给定的数字。显然其时间复杂度为N(n-1)/2即O(N^2)。这个算法很简单,写起来也很容易,但是效率不高。一般在程序设计里面,要尽可能降低算法的时间和空间复杂度,所以需要继续寻找效率更高的解法。解法二求两个数字之和,假设给定的和为Sum。一个变通的思路,就是对数 阅读全文

posted @ 2012-05-22 12:51 bingwenst 阅读(925) 评论(0) 推荐(0) 编辑

导航