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

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

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

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

(22)

文章推荐

  • 华图教育职业考试云南研究中心是一家怎样的公司 国家教育部考试中心

    华图教育职业考试云南研究中心是一家怎样的公司他是一家教育机构,主要是帮助大学生通过一些基本的资格考试。在内蒙古自治区教育招生考试中心怎么找初中会考成绩查询方法:直截输入地名和教育,就会出现当地的各种教育网,进入后,根据你所查考试的类型,一步步进入即可。一般省通考的,在省级以下网上查,市通考的,在市级

    2024年12月03日
    435
  • 火炬之光2怎么重复刷副本 火炬之光2技能重置

    火炬之光2怎么重复刷副本很简单的,你只要进入游戏的时候选择局域网-创建-在创建的页面里点选上重置世界-进入游戏,所有的副本都重置了,同时,野外非副本区域的怪也重置了。商店的货物也会重置。火炬之光无限技能怎么重置1.打开天赋,点击想要重置的天赋,然后点击返回这个箭头就可以重置了,可以参考下图:2.至于

    2024年12月12日
    418
  • 股票中的B和S是什么意思?

    网上有关“股票中的B和S是什么意思?”话题很是火热,小编也是针对股票中的B和S是什么意思?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。股票中的B的意思是外盘,也就是按卖价成交,一般认为是主动买入,看涨;S是内盘,也就是按买价成交,一般认为是主动卖出,看跌。

    2025年01月07日
    24
  • 贷款看流水主要看什么贷款看流水什么

    网上有关“贷款看流水主要看什么贷款看流水什么”话题很是火热,小编也是针对贷款看流水主要看什么贷款看流水什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。贷款看流水主要看什么客户去银行办理贷款的时候,银行一般会要求客户提供流水。而银行看流水主要是看存取款数额,

    2025年01月10日
    14
  • 央视有一个台的一个节目是专门讲悬疑科幻的 是什么名字来着

    网上有关“央视有一个台的一个节目是专门讲悬疑科幻的是什么名字来着”话题很是火热,小编也是针对央视有一个台的一个节目是专门讲悬疑科幻的是什么名字来着寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。走近科学《走近科学》是中央电视台综合频道推出的科普类电视节目。

    2025年01月16日
    16
  • 你认为应该如何给中小学生科普安全教育知识?_1

    网上有关“你认为应该如何给中小学生科普安全教育知识?”话题很是火热,小编也是针对你认为应该如何给中小学生科普安全教育知识?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。今年3月29日是第十五个“全国中小学生安全教育日”,主题为“加强疏散演练确保学生平安”。中

    2025年01月22日
    11
  • 扭扭棒手工翼龙教程

    网上有关“扭扭棒手工翼龙教程”话题很是火热,小编也是针对扭扭棒手工翼龙教程寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。扭扭棒手工翼龙教程如下:1、先从**扭扭棒上剪两段,用绿色扭扭棒缠绕起来,做出翼龙的头。2、而**的扭扭棒当然就是恐龙的角了。3、把剩余的

    2025年01月25日
    12
  • 海底小知识简短

    网上有关“海底小知识简短”话题很是火热,小编也是针对海底小知识简短寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1.海洋的小知识有哪些海和洋的区分广阔的海洋,从蔚蓝到碧绿,美丽而又壮观.海洋,海洋.人们总是这样说,但好多人却不知道,海和洋不完全是一回事

    2025年01月27日
    13
  • 我们要怎样才不算“丧?

    网上有关“我们要怎样才不算“丧?”话题很是火热,小编也是针对我们要怎样才不算“丧?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。12月31日,朋友圈里清一色的年终总结,去过的地方和见过的人。鲜少有人列出新一年的To-Do-List,列出之中也有的是重复去年未

    2025年01月28日
    12
  • 数据挖掘的国内外研究现状

    网上有关“数据挖掘的国内外研究现状”话题很是火热,小编也是针对数据挖掘的国内外研究现状寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。摘要:随着网络、数据库技术的迅速发畏以及数据库管理系统的广泛应用,人们积累的数据越来越多。数据挖掘(DataMining)就

    2025年02月04日
    5

发表回复

本站作者后才能评论

评论列表(4条)

  • 灵山
    灵山 2025年02月06日

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

  • 灵山
    灵山 2025年02月06日

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

  • 灵山
    灵山 2025年02月06日

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

  • 灵山
    灵山 2025年02月06日

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

    联系我们

    邮件:司岷号@sina.com

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

    关注我们