博客
关于我
C. Dominant Piranha(思维)
阅读量:265 次
发布时间:2019-03-01

本文共 1717 字,大约阅读时间需要 5 分钟。

如何判断一个序列中是否存在一个最大值的相邻元素比它小?

在这个问题中,我们需要判断一个序列中是否存在一个最大值的相邻元素比它小。如果满足这个条件,则输出这个最大值的位置;否则,输出-1。

关键思路

  • 寻找最大值:首先,我们需要遍历整个序列,找到其中最大的那个数。假设这个数位于位置 mx_pos

  • 检查相邻元素:接下来,我们需要检查这个最大值的位置 mx_pos 的前后元素是否存在一个比它小的数。

    • 如果 mx_pos 是第一个位置(即 i == 1),则我们需要检查它的后一个元素 a[2] 是否比它小。
    • 如果 mx_pos 是最后一个位置(即 i == n),则我们需要检查它的前一个元素 a[n-1] 是否比它小。
    • 如果 mx_pos 是中间的位置(即 i != 1i != n),则我们需要检查它的前一个元素 a[i-1] 和后一个元素 a[i+1] 是否有至少一个比它小。
  • 输出结果:如果上述条件满足,则输出 mx_pos;否则,输出 -1。

  • 代码逻辑解析

    #include 
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define debug(a) cout << "#a" << " = " << a << endl;using namespace std;const int maxn = 3e5 + 100;typedef long long ll;ll a[maxn];int main(void) { cin.tie(0); std::ios::sync_with_stdio(false); ll t; cin >> t; while (t--) { ll n; cin >> n; for (ll i = 0; i <= n + 10; i++) a[i] = 0; for (ll i = 1; i <= n; i++) cin >> a[i]; ll mx = -1e18; for (ll i = 1; i <= n; i++) { if (a[i] > mx) { mx = a[i]; pos1 = i; } } ll sum = 0; pos1 = 0; for (ll i = 1; i <= n; i++) { if (mx == a[i]) { if (((i-1)>=1 && a[i-1] >= a[i]) && (i+1 <=n && a[i+1] >= a[i])) { // 说明两边都比它大,那么不满足条件 continue; } if (i == 1 && a[i] > a[i+1]) { pos1 = i; break; } if (i == n && a[i] > a[i-1]) { pos1 = i; break; } if ((i != 1 && a[i] > a[i-1]) || (i != n && a[i] > a[i+1])) { pos1 = i; break; } } } if (pos1 == 0) { cout << "-1"; } }}

    代码解释

  • 包含头文件:首先包括了必要的头文件,包括 iostreamvectorqueue 等。
  • 变量定义:定义了一个全局常量 maxn 用于存储最大序列长度,定义了一个数组 a 用于存储输入序列。
  • 输入处理:读取输入的测试用例数量 t,然后对于每个测试用例,读取序列的长度 n 和序列的值。
  • 寻找最大值:遍历序列,找到最大的那个数,并记录它的位置 mx_pos
  • 检查相邻元素:检查最大值的位置的前后元素是否有比它小的数。如果有,则记录位置 pos1 并跳出循环。
  • 输出结果:根据 pos1 的值输出结果。如果 pos1 未被设置为有效位置,则输出 -1。
  • 这个算法的时间复杂度为 O(n),适用于大规模数据的处理。

    转载地址:http://vwct.baihongyu.com/

    你可能感兴趣的文章
    mysql优化--索引原理
    查看>>
    MySQL优化之BTree索引使用规则
    查看>>
    MySQL优化之推荐使用规范
    查看>>
    Webpack Critical CSS 提取与内联教程
    查看>>
    mysql优化概述(范式.索引.定位慢查询)
    查看>>
    MySQL优化的一些需要注意的地方
    查看>>
    mysql优化相关
    查看>>
    MySql优化系列-优化版造数据(存储过程+函数+修改存储引擎)-2
    查看>>
    MySql优化系列-进阶版造数据(load data statment)-3
    查看>>
    MySql优化系列-造数据(存储过程+函数)-1
    查看>>
    MySQL优化配置详解
    查看>>
    Mysql优化高级篇(全)
    查看>>
    mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
    查看>>
    mysql会对联合索性排序优化_MySQL索引优化实战
    查看>>
    MySQL作为服务端的配置过程与实际案例
    查看>>