【蓝桥杯】 最大间隙:给定一个序列a_1,a_2,⋯,a_n,其中a_1≤ a_2≤⋯≤ a_n。 相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。 请问序列中最大的间隙值是多少?

题目描述

题目传送门 >> 最大间隙

【问题描述】
给定一个序列 a 1 , a 2 , ⋯ , a n a_1,a_2,⋯,a_n a1,a2,,an,其中 a 1 ≤ a 2 ≤ ⋯ ≤ a n a_1≤ a_2≤⋯≤ a_n a1a2an
相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。
请问序列中最大的间隙值是多少?

【输入描述】
输入的第一行包含一个整数 n,表示序列的长度。
第二行包含 n 个正整数,为给定的序列。
其中,1≤ n≤ 1000,1≤ a_i≤ 1 0 5 10^5 105

【输出描述】
输出一个整数,表示序列中最大的间隙值。

【输入输出样例】
输入:

 5
 1 3 8 9 12

输出:

 5

【运行限制】
• 最大运行时间:1s
• 最大运行内存: 128M


解题思路

从输入序列的第2个元素开始,判断插入的元素与上一个元素的间隙,如果当前间隙大于之前的最大间隙"max",则将当前间隙赋值给最大间隙。


解题代码

C语言

#include <stdio.h>
int main()
{
	int n, i, max = 0;
	scanf("%d", &n);	//输入一个整数n,表示序列的长度
	int ai[100000] = {0};
	for (i = 0; i < n; i++) {
		cin >> ai[i];	//输入n个正整数,为给定的序列
		if ((i != 0) && (ai[i] - ai[i - 1] > max)z) {
			max = ai[i] - ai[i - 1];
		}
	}
	printf("%d", max);
	return 0;
}

测试用例

测试1
输入:

 4
 1 4 7 14

输出:

 7

测试2
输入:

 6
 4 6 10 18 21 25

输出:

 8
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值