面试题之数组和分析
来源:互联网 发布:福建师范网络教育平台 编辑:程序博客网 时间: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有关,与数组的大小无关。
【注】杨辉三角,在杨辉的《九章算术》中有记载,那时还叫贾宪三角,只不过后来杨辉的名字非常大,渐渐叫杨辉三角的越来越多。
【分析完毕】
- 面试题之数组和分析
- 面试题之数组指针和指针数组的区别
- 数组面试题之矩阵
- 数组面试题之序列
- 数组面试题之统计
- 面试题之数组统计
- 面试题之数组篇
- 常见面试题之数组
- js面试题之数组去重和快速排序
- 【面试题之算法部分】最大和连续子数组
- 经典面试题之求连续子数组最大和
- 2017032001面试题之数组指针和指针数组的区别
- c++面试题之数组与指针
- 笔试面试题之后缀数组
- 面试题之陈利人 数组墙
- 阿里巴巴面试题之二维数组有序
- 面试题之二维数组中的查找
- google面试题之数组补丁
- 【Just AC it】IA 动态规划 小结 byPlato
- 第一天、开始编译vlc
- Excel VBA 根据筛选条件自动汇总统计(for 铁虎)
- 定时任务脚本
- 系统调用
- 面试题之数组和分析
- 你不了解的awk
- TreeMap源码分析——基础分析(基于JDK1.6)
- Linux shell 变量 数学 运算
- 理发师悖论
- SHELL字符串处理技巧(${}、##、%%)
- uva 317 - Hexagon(规律推导)
- NetScheduleJobAdd函数添加任务计划的方法
- 金山快盘 文件冲突 解决方法