【面试题-编程】查找数组中差值最大的两个数
来源:互联网 发布:网络ac是什么意思 编辑:程序博客网 时间:2024/06/08 08:53
题目:书写一个函数,实现查找一个数组中右边减左边的差最大的两个数。右边是指当前数组右边的所有数。
思路一:最开始想到的就是循环整个数组,拿右边的所有数字减去当前位置的数,然后记录最大差值的两个数。时间复杂度O(N*N)
思路二:最大差值可以通过拿当前的数减去它左边的最小的数中最大的那个值。时间复杂度O(N)
思路二的函数:
template <class T>void FindMaxDifference2(const T array[], const int arraySize, T &leftNum, T &rightNum){ assert(arraySize >= 2); // 数组个数不少于2的断言 // 初始化返回的左边和右边对应的数 leftNum = array[0]; rightNum = array[1]; T difference = rightNum - leftNum; // 当前两个数的差值 T minNum = leftNum > rightNum ? rightNum : leftNum; // 当前左边最小的数 for (int i = 2; i < arraySize; i++) { // 将当前元素和它之前的最小元素进行相减,当差值更大,更新记录的元素 if (array[i] - minNum > difference) { leftNum = minNum; rightNum = array[i]; difference = array[i] - minNum; } if (array[i] < minNum) // 如果当前元素是最新的最小数,更新当前最小的数 { minNum = array[i]; } }}
0 0
- 【面试题-编程】查找数组中差值最大的两个数
- (动态规划DP)面试题:求数组中两个数的最大差值(只能下标大的减去下标小的)符合无后效性
- 求数组排序后相邻两个数的最大差值
- 求一个数组中两个元素的最大差值
- 冒泡排序和查找数组中最大的数及查找两个数中最大的数
- 找出整数数组中两个数差值的绝对值最小
- 找出整数数组中两个数差值的绝对值最小
- Maximum Gap 寻找数组中排序后相邻两个数的最大差值,桶排序,O(n)
- 如果给定一个数组arr[0,...N-1],要求找出相邻两个数的最大差值
- [经典面试题][百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数。
- 程序员面试题100题第10题——在排序数组中查找和为给定值的两个数
- 查找数组中最大的两个数(Find two Largest Number)
- Find K-th Smallest Pair Distance:查找数组元素中差值第K大的两个元素的差值
- 【我解C语言面试题系列】012 查找整数数组中第二大的数
- C语言面试题 4 (查找整数数组中第二大的数)
- 数组中最大的差值-LintCode
- 剑指offer 面试题40 数组中出现一次的两个数
- 剑指Offer 面试题40:数组中只出现一次的两个数 题解
- android--通知之Notification
- qt excel
- Flex4+BlazeDS整合J2EE实例(非插件)
- MFC中的CArchive(2)
- 个人如何采用敏捷的工作方法[作者 Ben Linders ,译者 李彬 ]
- 【面试题-编程】查找数组中差值最大的两个数
- 第17周项目1.2从大到小输出3个数
- Python模拟键盘输入
- 关于dll的导出符号
- AIX5.3 安装 ORACLE 10G
- C#实现文件下载
- ARM Linux为什么要引进Device Tree
- word文件打不开
- 浅谈这个时代的SEO与网络营销