数组内两个元素的最大差

翻译 2015年10月29日 13:22:58

Maximum difference between two elements such that larger element appears after the smaller number

2016京东商场校园招聘笔试题

问题描述:
无序数组array, 找到数组中两个数的最大差值, 且大数出现在小数之后,如:arr[i]-arr[j], 且 i<j
比如: array 是 [2, 3, 10, 6, 4, 8, 1],最大差值是8(2-10)

方法1
依次访问数组中的每一个元素:

1) 记录当前访问过的数组中的最小值 min_val;
2) 当前元素值arr[i] - min_val 和 max_diff作比较
   若大于 max_diff , 则更新它的值

时间复杂度O(n)
空间复杂度O(1)

#include <iostream>

using namespace std;

int maxDiff(int *arr, int n)
{
        int min_val = arr[0];
        int max_diff = arr[1]-arr[0];
        for(int i=1; i<n; ++i)
        {
                if(max_diff <(arr[i]-min_val))
                        max_diff = arr[i] - min_val;
                min_val = arr[i]<min_val?arr[i]:min_val;
        }
        return max_diff;
}


int main()
{
        int arr[] = {2, 3, 10, 6, 4,8,1};
        cout<<maxDiff(arr, 7)<<endl;
}

【面试题-编程】查找数组中差值最大的两个数

题目:书写一个函数,实现查找一个数组中右边减左边的差最大的两个数。右边是指当前数组右边的所有数。 思路一:最开始想到的就是循环整个数组,拿右边的所有数字减去当前位置的数,然后记录最大差值的两个数。时...
  • xunmengpiaoyun
  • xunmengpiaoyun
  • 2013年12月18日 17:21
  • 2364

数字序列中的最大差和最小差对数

题目: 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢? 例如: 输入 6   45 32 45 16 6 5   输出 1  2 ...
  • u011707827
  • u011707827
  • 2016年09月02日 23:07
  • 989

动态规划经典问题03:数组中最大的数对差(或最小的数对差)

数组中最大的数对(或最小的数对)
  • BrilliantEagle
  • BrilliantEagle
  • 2014年09月07日 10:53
  • 1513

求一个数组中两个元素的最大差值

一个整数数组a[n],在a[n]中找两个数字,使得下标大的数字减去下表小的数字所得的差值最大,即: 在a[n]中找 a[i] 和 a[j] ,使得 a[i] - a[j] 的值最大,并且 i > j...
  • stormbjm
  • stormbjm
  • 2013年09月28日 20:52
  • 3861

动态规划系列---求数组中两个元素差的最大值

题目 求数组中两个元素差的最大值(后面的元素减去前面的元素);对应实际生活中的股票买卖,找出可能的最大收益;思路 类似于求数组连续和的最大值; 保存最大差值和最小值,遍历数组,如果当前元素-mi...
  • bh_xiaoxinba
  • bh_xiaoxinba
  • 2016年11月15日 21:55
  • 953

九章算法面试题31 子数组的最大差

给定一个数组,求两个不相交的并且是连续的子数组A和B(位置连续),满足|sum(A) - sum(B)|最大(和之差的绝对值)。例如[2, -1, -2, 1, -4, 2, 8],可以得到A=[-1...
  • JiuZhang_ninechapter
  • JiuZhang_ninechapter
  • 2015年05月12日 14:31
  • 1031

数组元素倒序

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac...
  • seeds_home
  • seeds_home
  • 2012年02月21日 15:00
  • 475

C语言:数组中相邻元素持续相加,求其最大值!

C语言:数组中相邻元素持续相加,求其最大值!
  • Acoolbest
  • Acoolbest
  • 2017年04月28日 15:25
  • 185

C primer plus 第十章 练习7:

/* =========================================================== 利用练习2中的复制函数,把一个包含7个元素的数组内容第3个 到第5...
  • qcx1221
  • qcx1221
  • 2016年06月03日 18:31
  • 373

【算法】python实现数组左减右最大差

思路: 遍历数组,每次取出当前轮数的整数A[i]和该整数以后的数组a。 如:A = []--> A[i] 和 a = A[i-1,i-2,n] 计算差,当前整数减去a数组中的最小值a_min,需要排序...
  • ChenVast
  • ChenVast
  • 2017年12月29日 17:18
  • 84
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组内两个元素的最大差
举报原因:
原因补充:

(最多只允许输入30个字)