面试题之数组和分析

来源:互联网 发布:福建师范网络教育平台 编辑:程序博客网 时间:2024/04/29 17:38

数组和分析

原题

有数组A={5,3,8,9,16},第一次遍历有:A = {3-5,8-3,9-8,16-9}={-2,5,1,7},数组中元素和为-2+5+1+7=11;第二次遍历有:A = {5-(-2),1-5,7-1}={7,-4,6},元素和为9.

给定数组A,求第n次遍历之后,数组中元素的和。

分析

处理这样的题目,如果没有直接知道相关的原理,可以自己走一下一些具体的例子,这样就可以发现一些规律,根据这些规律,再去联想解决的完整方法。

经过观察,我们可以发现:

  • 对于第k次遍历而言,x_k_1、x_k_2、...、x_k_m,sum = x_k_m - x_k_1

也就是说,第k次遍历结果的和,只与第一个和最后一个元素先关。下面,就来讨论,如何求得第一个和最后一个元素。

我们看题目中的例子,先考虑第一个元素的变化

  • 第一次遍历 k = 1时:-2=3-5

  • 第二次遍历 k = 2时:7=5-(-2)=(8-3)-(3-5)=8-2*3+5

  • 第三次遍历 k = 3时:-11=-4-7=(1-5)-(5-(-2)) = ((9-8)-(8-3)) - ((8-3)-(3-5))=9-3*8+3*3-5

分析到此,想必大家已经能够明白这其中的规律,其实就是杨辉三角,老外叫帕斯卡三角。最后一个节点是类似的。而且,真个方法的时间复杂度与遍历的次数n有关,与数组的大小无关。

【注】杨辉三角,在杨辉的《九章算术》中有记载,那时还叫贾宪三角,只不过后来杨辉的名字非常大,渐渐叫杨辉三角的越来越多。

【分析完毕】

原创粉丝点击