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

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

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

一个整数数组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://www.gzsmmy.cn/xqzs/202512-3238.html

(58)

文章推荐

  • 华夏沪深300指数增强型证券投资基金c与a有何区别

    网上有关“华夏沪深300指数增强型证券投资基金c与a有何区别”话题很是火热,小编也是针对华夏沪深300指数增强型证券投资基金c与a有何区别寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、华夏沪深300指数增强基金A和C类的区别主要在于申购交易费率,两者

    2025年01月06日
    77
  • 1996—1997年深发展A股的大概走势情况

    网上有关“1996—1997年深发展A股的大概走势情况”话题很是火热,小编也是针对1996—1997年深发展A股的大概走势情况寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。深证A股指数深证A股指数是由深圳证券交易所(ShenzhenStockExchan

    2025年01月11日
    44
  • 市值最高的公司排名榜

    网上有关“市值最高的公司排名榜”话题很是火热,小编也是针对市值最高的公司排名榜寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。市值最高的公司排名榜:1、苹果?除了是世界上市值最高的公司,苹果还在品牌价值排行榜中占据第一。截至2021年,全球有超过16.5活跃的

    2025年01月18日
    42
  • 经济学哪个大学最好

    网上有关“经济学哪个大学最好”话题很是火热,小编也是针对经济学哪个大学最好寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。经济学专业排名前10名的大学有:北京大学、中国人民大学、中央财经大学、对外经济贸易大学、东北财经大学、上海财经大学、厦门大学、清华大学

    2025年02月09日
    34
  • 必看教程“普通牌雷达感应分析仪怎样使用,推荐3个购买渠道

    普通扑克牌分析器,只要使用它,任何普通扑克,任何场地,单人使用,不需要任何加工处理,可直接知道每家牌的大小,并可控制自己拿到最大的那份牌。操作和使用方法点击添加客服微信普通扑克牌分析器放置在身体上合适的位置。他人洗牌,切牌,准备发牌(准备,是准备发牌)。此时,普通扑克牌分析器自动分析出哪一家大小,瞬

    2025年11月01日
    15
  • 3分钟科普“扑克牌扫描仪能下载吗(怎么让系统给发好牌)

    点击添加客服微信关于普通麻将机免安装控牌器这个问题其实是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。手机麻将可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机麻将系统规律,只需要输入自己想要的开挂功能,一键便可以生成出手机麻

    2025年11月07日
    9
  • 必看教程“普通牌分析仪效果怎么样(确实真的有挂)

    点击添加客服微信关于普通麻将机免安装控牌器这个问题其实是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。手机麻将可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机麻将系统规律,只需要输入自己想要的开挂功能,一键便可以生成出手机麻

    2025年11月08日
    31
  • 必看教程“麻将机程控器怎么拆除(其实真的确实有挂)

    点击添加客服微信关于普通麻将机免安装控牌器这个问题其实是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。手机麻将可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机麻将系统规律,只需要输入自己想要的开挂功能,一键便可以生成出手机麻

    2025年11月11日
    29
  • 一分钟了解“麻将机程控器安装在手机里怎么用!详细开挂教程

    普通扑克牌分析器,只要使用它,任何普通扑克,任何场地,单人使用,不需要任何加工处理,可直接知道每家牌的大小,并可控制自己拿到最大的那份牌。操作和使用方法点击添加客服微信普通扑克牌分析器放置在身体上合适的位置。他人洗牌,切牌,准备发牌(准备,是准备发牌)。此时,普通扑克牌分析器自动分析出哪一家大小,瞬

    2025年11月12日
    28
  • 3分钟科普“普通扑克牌感应分析器”(专用神器)

    普通扑克牌分析器,只要使用它,任何普通扑克,任何场地,单人使用,不需要任何加工处理,可直接知道每家牌的大小,并可控制自己拿到最大的那份牌。操作和使用方法点击添加客服微信普通扑克牌分析器放置在身体上合适的位置。他人洗牌,切牌,准备发牌(准备,是准备发牌)。此时,普通扑克牌分析器自动分析出哪一家大小,瞬

    2025年12月10日
    4

发表回复

本站作者后才能评论

评论列表(4条)

  • 灵山
    灵山 2025年12月16日

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

  • 灵山
    灵山 2025年12月16日

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

  • 灵山
    灵山 2025年12月16日

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

  • 灵山
    灵山 2025年12月16日

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

    联系我们

    邮件:司岷号@sina.com

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

    关注我们