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

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

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

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

(40)

文章推荐

  • 2021年10月25日多久的纪念日 12月25日抗美援朝纪念日

    2021年10月25日多久的纪念日2021年10月25日是抗美援朝纪念日,简称抗美援朝日。抗美援朝是发生在1950年的10月-1953年7月这段时间。抗美援朝结束后,规定每年的10月25日为每年的抗美援朝纪念日。抗美援朝又可以叫做抗美援朝战争,抗美援朝成功后,中国的革命道路又取得了很大的成功,这对中

    2024年11月28日
    423
  • 2021小学四年级下册快乐暑假语文答案 语文高考试卷2021答案

    2021小学四年级下册快乐暑假语文答案2021小学四年级下册快乐暑假的语文答案很简洁,基本上都是只有选择填空的答案,其他的例如写作文,阅读理解就基本上是略。2021年全国高考语文试卷及答案一、现代文阅读(一)1.C2.B3.D4.①文章采用先总后分的论证结构,先提出网络行为尤其是青年的网络

    2024年11月28日
    491
  • 中国的资金再股票的多还是银行的多?

    网上有关“中国的资金再股票的多还是银行的多?”话题很是火热,小编也是针对中国的资金再股票的多还是银行的多?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。在银行的多!股票投资都是闲钱,赚少配多,一般人不感兴趣。再说了中国已经进入老龄化阶段,中老年人有积蓄但

    2024年12月27日
    40
  • 股票有几种分析方法?

    网上有关“股票有几种分析方法?”话题很是火热,小编也是针对股票有几种分析方法?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。股票的几种简单分析方法一股票涨无非是绩优,盘小,收购,超跌;实质是对其价值的重新认识。每股收益能反应该股的成长性,净资产则说明该股价值

    2024年12月29日
    36
  • 中国十大评级公司

    网上有关“中国十大评级公司”话题很是火热,小编也是针对中国十大评级公司寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。国内正规评级公司排名:东方金诚国际信用评估有限公司、中诚信国际信用评级有限公司、联合信用评级有限公司、大公国际资信评估有限公司、上海新世纪

    2024年12月30日
    41
  • 周期函数的定义是什么

    网上有关“周期函数的定义是什么”话题很是火热,小编也是针对周期函数的定义是什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。定义存在非零常数t,对于任意定义域中的x都成立1)f(x±t)=f(x)2)f(x+t)=f(x)则称f(x)是周期函数,t是他的

    2025年01月05日
    41
  • 怎么看股票属于哪个板块

    网上有关“怎么看股票属于哪个板块”话题很是火热,小编也是针对怎么看股票属于哪个板块寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。股市里面股票那么多,我们打开股票软件,发现各大板块的股票都在里面,比如科创板、主板、创业板等等,那么如何区分这些股票是属于哪个

    2025年01月05日
    33
  • 浙商银行和上海银行哪个好

    网上有关“浙商银行和上海银行哪个好”话题很是火热,小编也是针对浙商银行和上海银行哪个好寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。上海银行和浙商银行,看名字都是地方性银行,与常见得14家银行无论是规模,还是审批上肯定自己的审核标准。但就目前情况来说,上海银

    2025年01月17日
    47
  • 为什么很多人反感保险?

    网上有关“为什么很多人反感保险?”话题很是火热,小编也是针对为什么很多人反感保险?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。买了保险,满怀希望能赔,最后被套路一分没有的惨状,不是经历过的人不会懂。往往因为一个字,就会让你损失几十万!公子当年在保司任职时,

    2025年01月31日
    30
  • 如何才能提高顾客会员卡的使用率

    网上有关“如何才能提高顾客会员卡的使用率”话题很是火热,小编也是针对如何才能提高顾客会员卡的使用率寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、区别对待把普通顾客与会员进行很明显的划分,同一个商品,普通顾客是一个价格,会员是一个价格;普通顾客是一种服务,

    2025年02月08日
    23

发表回复

本站作者后才能评论

评论列表(4条)

  • 灵山
    灵山 2025年07月05日

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

  • 灵山
    灵山 2025年07月05日

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

  • 灵山
    灵山 2025年07月05日

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

  • 灵山
    灵山 2025年07月05日

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

    联系我们

    邮件:司岷号@sina.com

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

    关注我们