数组找出差值最大的两个数

网上有关“数组找出差值最大的两个数”话题很是火热,小编也是针对数组找出差值最大的两个数寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一...

网上有关“数组找出差值最大的两个数”话题很是火热,小编也是针对数组找出差值最大的两个数寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

一个整数数组a[n],在a[n]中找两个数字,使得下标大的数字减去下表小的数字所得的差值最大,即:

在a[n]中找 a[i] 和 a[j] ,使得 a[i] - a[j] 的值最大,并且 i > j 。 题目来自这里。

寻求O(n)的解法,思路:

记录已经遍历的元素中的最小值min和当前所求的最大差值r,然后继续遍历下一个元素。

首先和当前最小值min求差,如果比r大,则更新r。

其次,跟当前最小值min比较,如果小于min,则更新min。

#include <stdio.h>

int main(int argc, char *argv[])

{

int a[]={-1, -2, -3, -1};

int n = sizeof(a) / sizeof(a[0]);

int min, r; // min当前最小值, r最终要求的结果

int i;

min = a[0] < a[1] ? a[0] : a[1];

r = a[1] - a[0];

for (i = 2; i < n; i++)

{

if (a[i] - min > r)

r = a[i] - min;

if (a[i] < min)

min = a[i];

}

printf("%d\n", r);

return 0;

}

之前在面试的时候碰到一道题,要求找出一个互异数组中两个元素的最大差值。具体描述如下:

有一个整数数组d[0,...,n-1],并且数组满足不存在相同的元素,要求找出

1) max{d[i] - d[j]} 且 i > j;(对应实际生活中的股票买卖,找出可能的最大收益)

2) max{d[i] - d[j]} 且 i < j。

思路有很多种,用动态规划最简单,时间复杂度都是O(n),线性时间复杂度。以下为代码:

#define DEBUG

#include <cstdio>

#include <cstdlib>

using namespace std;

inline int min(int a, int b)

{

return a < b ? a : b;

}

intfindMaxDiff1(int n, int* d)

{

int i = 0;

int minLeft = d[0];

int maxDiff = d[1] - d[0];

for(i = 2; i < n; i++)

{

if(d[i - 1] < minLeft)

{

minLeft = d[i - 1];

}

if(d[i] - minLeft > maxDiff)

{

maxDiff = d[i] - minLeft;

}

}

return maxDiff;

}

intfindMaxDiff2(int n, int* d)

{

int i = 0;

int maxLeft = d[0];

int maxDiff = d[0] - d[1];

for(i = 2; i < n; i++)

{

if(d[i - 1] > maxLeft)

{

maxLeft = d[i - 1];

}

if(maxLeft - d[i] > maxDiff)

{

maxDiff = maxLeft - d[i];

}

}

return maxDiff;

}

int main()

{

#ifndef DEBUG

int n = 0, i = 0;

int* d = NULL;

printf("please input the length of array:");

scanf("%d", &n);

d = (int*)malloc(sizeof(int) * n);

printf("please input the elements of array:");

for(i = 0; i < n; i++)

{

scanf("%d", &d[i]);

}

#else

int n = 8;

int d[8] = {12, 4, 23, 1, 2, 5, 7, 10};

#endif

int d1 = findMaxDiff1(n, d);

int d2 = findMaxDiff2(n, d);

#ifndef DEBUG

free(d);

#endif

return 0;

}

关于“数组找出差值最大的两个数”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[灵山]投稿,不代表司岷号立场,如若转载,请注明出处:https://gzsmmy.cn/xqzs/202501-3238.html

(6)

文章推荐

  • 为什么股票经常在早盘冲高回落?

    网上有关“为什么股票经常在早盘冲高回落?”话题很是火热,小编也是针对为什么股票经常在早盘冲高回落?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。有盯盘习惯的股票朋友看到遇到过股票在开盘后不久迅速拉高,之后又回落甚至由涨转跌的情况。如果大家仔细观察的话,会

    2024年12月24日
    72
  • 牛市的上涨过程有何主要特点

    网上有关“牛市的上涨过程有何主要特点”话题很是火热,小编也是针对牛市的上涨过程有何主要特点寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。牛市一般分上半场和下半场,因为牛市的上半场是由经济、政策因素拉升形成的,所以,在上半场要选择经济复苏快、国家政策扶持行业的

    2024年12月26日
    6
  • 稀土材料的基本介绍

    网上有关“稀土材料的基本介绍”话题很是火热,小编也是针对稀土材料的基本介绍寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。稀土就是化学元素周期表中镧系元素—镧(La)、铈(Ce)、镨(Pr)、钕(Nd)、钷(Pm)、钐(Sm)、铕(Eu)、钆(Gd)、铽

    2024年12月29日
    6
  • 股票里名词术语的通俗叫法-_1

    网上有关“股票里名词术语的通俗叫法?”话题很是火热,小编也是针对股票里名词术语的通俗叫法?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。开盘价:是指当日开盘后该股票的第一笔交易成交的价格。如果开市后30分钟内无成交价,则以前日的收盘价作为开盘价。收盘

    2024年12月29日
    7
  • 布林线是什么啊?

    网上有关“布林线是什么啊?”话题很是火热,小编也是针对布林线是什么啊?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。布林线(Boll)指标是通过计算股价的“标准差”,再求股价的“信赖区间”。该指标在图形上画出三条线,其中上下两条线可以分别看成是股价的压力线和

    2024年12月30日
    4
  • 周四买一天逆回购算几天利息?

    网上有关“周四买一天逆回购算几天利息?”话题很是火热,小编也是针对周四买一天逆回购算几天利息?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一般情况下,周四买一天国债逆回购有三天利息。周四买入,回购资金一般会在周五到账,但不能取用,到下周一才能取出。周六

    2024年12月31日
    5
  • 我有1万元不多。可以炒股吗

    网上有关“我有1万元不多。可以炒股吗”话题很是火热,小编也是针对我有1万元不多。可以炒股吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。可以。多少都可以赚。如何学习炒股是很多股民所迫切关心的问题,可能还没有这样的专业学校,炒股流派很多很杂,短线、中线、长线、

    2025年01月02日
    6
  • 炒股的人的命运最终会有以下哪几种结果?_1

    网上有关“炒股的人的命运最终会有以下哪几种结果?”话题很是火热,小编也是针对炒股的人的命运最终会有以下哪几种结果?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。我认为炒股的人命运最终只会有一种结果,那就是大败亏输,因为炒股真的不是我们这些金融小白,还有就

    2025年01月02日
    6
  • 分时上怎么显示大盘的走势

    网上有关“分时上怎么显示大盘的走势”话题很是火热,小编也是针对分时上怎么显示大盘的走势寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。大盘分时走势,又称大盘即时走势:1.红色柱状线和绿色柱状线红色柱状线和绿色柱状线是用来反映指数上涨或下跌的强弱程度的。大盘向

    2025年01月08日
    3
  • 看透主力伎俩只需这十招!

    网上有关“看透主力伎俩只需这十招!”话题很是火热,小编也是针对看透主力伎俩只需这十招!寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。无论是中线还是短线,只要考入到买入的时候,其实都离不开看盘,所以,学会看盘技巧很重要。下面给大家介绍,看透主力伎俩只需这十

    2025年01月08日
    1

发表回复

本站作者后才能评论

评论列表(4条)

  • 灵山
    灵山 2025年01月10日

    我是司岷号的签约作者“灵山”!

  • 灵山
    灵山 2025年01月10日

    希望本篇文章《数组找出差值最大的两个数》能对你有所帮助!

  • 灵山
    灵山 2025年01月10日

    本站[司岷号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 灵山
    灵山 2025年01月10日

    本文概览:网上有关“数组找出差值最大的两个数”话题很是火热,小编也是针对数组找出差值最大的两个数寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一...

    联系我们

    邮件:司岷号@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们