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

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

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

一个整数数组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/202510-3238.html

(45)

文章推荐

  • 丸子头马尾扎法 丸子头的扎法图解

    丸子头马尾扎法回答如下:丸子头和马尾是两种不同的发型,但它们可以结合在一起,成为一种新的扎发方式。以下是丸子头马尾扎法的具体步骤:步骤1:将头发扎成高丸子头,固定好。步骤2:将丸子头下面的头发分成两部分,分别向两侧拉出一束头发。步骤3:将两束头发扭在一起,然后往后拉,扎成一个低马尾。步骤4:用发带或

    2024年11月30日
    452
  • 股票开盘后会出现哪几种走势?

    网上有关“股票开盘后会出现哪几种走势?”话题很是火热,小编也是针对股票开盘后会出现哪几种走势?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。股票走势关系着众多投资者的利益,所以大家对股票开盘以后的走势都是相当关注。那么,股票开盘后会出现哪几种走势?理财君

    2024年12月28日
    53
  • 各位高手帮我点评一下601600中国铝业这支股票

    网上有关“各位高手帮我点评一下601600中国铝业这支股票”话题很是火热,小编也是针对各位高手帮我点评一下601600中国铝业这支股票寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。公司资源优势突出,现已控制资源量6.3亿吨,可以支持现有氧化铝规模生产30

    2025年01月02日
    33
  • 波动率怎么计算的?

    网上有关“波动率怎么计算的?”话题很是火热,小编也是针对波动率怎么计算的?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。波动率计算公式:波动率=STDEV(A2:L2),波动率是金融资产价格的波动程度,是对资产收益率不确定性的衡量,用于反映金融资产的风险

    2025年01月07日
    27
  • 为什么完整工业体系对一个国家如此重要

    网上有关“为什么完整工业体系对一个国家如此重要”话题很是火热,小编也是针对为什么完整工业体系对一个国家如此重要寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、现代的工业体系中,所有的工业总共可以分为39个工业大类,191个中类,525个小类。完整的工业体系

    2025年01月15日
    37
  • 春晚主持词.

    网上有关“春晚主持词.”话题很是火热,小编也是针对春晚主持词.寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。 主持词需要富有情感,充满热情,才能有效地吸引到观众。在当下这个社会中,很多场合都需要主持人活跃现场气氛,相信大家又在为写主持词犯愁了吧!以下是我为大

    2025年01月27日
    59
  • 一些你不能错过的骨骼秘密

    网上有关“一些你不能错过的骨骼秘密”话题很是火热,小编也是针对一些你不能错过的骨骼秘密寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一本优秀的科普书的标准是什么?一些征集科普作品的比赛要求参赛作品具有较强的科学性、艺术性、趣味性;形式活泼、内容丰富、为公众喜

    2025年02月01日
    38
  • 李培刚医用新疗法

    网上有关“李培刚医用新疗法”话题很是火热,小编也是针对李培刚医用新疗法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。李培刚医学新疗法,一种以按摩治疗颈臂腰腿痛的方法,由河北省唐山市骨伤科研究所所长李培刚独创,有说此种疗法效果很好,也有说是忽悠的。2009年

    2025年02月09日
    23
  • 安装程序教程“麻将机程控器哪里购买(助手神器外辅工具)

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

    2025年10月31日
    1
  • 我来教大家“电子扑克牌感应器一般多少钱,推荐7个购买渠道

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

    2025年10月31日
    1

发表回复

本站作者后才能评论

评论列表(4条)

  • 灵山
    灵山 2025年10月31日

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

  • 灵山
    灵山 2025年10月31日

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

  • 灵山
    灵山 2025年10月31日

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

  • 灵山
    灵山 2025年10月31日

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

    联系我们

    邮件:司岷号@sina.com

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

    关注我们