当前位置: 首页 > news >正文

week2-[一维数组]最大元素

week2-[一维数组]最大元素

题目描述

给定 NNN 个整数A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN。请求出这 NNN 个数的最大值,并找出最大值的出现位置(A1A_1A1 的位置为 111A2A_2A2 的位置为2,依此类推)。如果同时存在多个最大的数,按从小到大的顺序输出最大的数出现的所有位置。

输入格式

读入包括 222 行。第一行只有 111 个整数 NNN,表示数的个数。第二行包括 NNN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN

输出格式

输出 222 行,第一行包括一个整数,表示 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN 的最大值。 第二行包含若干个整数,表示最大值在 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN 中的所有出现位置(每两个数之间用恰好一个空格隔开)。

样例 #1

样例输入 #1

8
1 3 5 9 2 6 4 2

样例输出 #1

9
4

样例 #2

样例输入 #2

9
2 5 2 6 8 5 11 3 11

样例输出 #2

11
7 9

样例 #3

样例输入 #3

5
10 10 10 8 10

样例输出 #3

10
1 2 3 5

提示

样例解释1

1,3,5,9,2,6,4,21, 3, 5, 9, 2, 6, 4, 21,3,5,9,2,6,4,2 中的最大值为 999,出现在第 444 个位置。

样例解释2

2,5,2,6,8,5,11,3,112, 5, 2, 6, 8, 5, 11, 3, 112,5,2,6,8,5,11,3,11 中的最大值为 111111,出现在第 777 个位置和第 999 个位置。

样例解释3

10,10,10,8,1010, 10, 10, 8, 1010,10,10,8,10 中的最大值为 101010,出现在第 1,2,3,51,2,3,51,2,3,5 个位置。

数据范围

对于所有数据,1≤N≤500,−100≤Ai≤1001 \le N \le 500, -100 \le A_i \le 1001N500,100Ai100

1. 阅读题目

  • 输入:
    • 第 1 行:整数 NNN
    • 第 2 行:NNN 个整数 A1,A2,…,ANA_1,A_2,\dots,A_NA1,A2,,AN
  • 输出:
    1. 第一行:最大值
    2. 第二行:最大值出现的所有位置(从 1 开始),按出现顺序输出

2. 分析问题

思路很直接:

  1. 初始化 maxVal = A[0]pos 空数组保存位置。
  2. 遍历数组:
    • 如果当前元素 > maxVal → 更新 maxVal,清空 pos,记录当前位置
    • 如果当前元素 == maxVal → 在 pos 追加当前位置
  3. 输出 maxValpos

注意事项:

  • 位置从 1 开始,所以索引 i+1 保存到 pos
  • 数据量小(N≤500N \le 500N500),可以直接用数组保存位置。

3. C++ 代码实现(兼容低版本)

#include <iostream>
using namespace std;int main() {int N;cin >> N;int A[505];      // 保存输入数组int pos[505];    // 保存最大值出现的位置int maxVal = -101; // 初始小于最小可能值int cnt = 0;     // 记录最大值出现次数for (int i = 0; i < N; i++) {cin >> A[i];if (A[i] > maxVal) {maxVal = A[i];cnt = 1;pos[0] = i + 1; // 保存位置,从1开始} else if (A[i] == maxVal) {pos[cnt] = i + 1;cnt++;}}// 输出最大值cout << maxVal << "\n";// 输出所有位置for (int i = 0; i < cnt; i++) {if (i > 0) cout << " ";cout << pos[i];}cout << "\n";return 0;
}

4. 示例运行

输入:

9
2 5 2 6 8 5 11 3 11

输出:

11
7 9

✅ 总结

  • 遍历数组同时统计最大值和位置
  • 出现新最大值时清空位置数组
  • 相同最大值追加位置
  • 时间复杂度 O(N)O(N)O(N),空间复杂度 O(N)O(N)O(N)
http://www.dtcms.com/a/340041.html

相关文章:

  • 单细胞格式转换 rds 转成 h5ad
  • transformer模型初理解
  • Transformer、BERT、BEiT等模型相关八股及代码【自用】
  • HJ4 字符串分隔
  • 神经网络训练过程详解
  • 电流采样实现方法
  • JavaScript 代码保护与混淆
  • Vue2+Vue3前端开发_Day1
  • 端口映射原理操作详解教程:实现外网访问内网服务,本地路由器端口映射公网ip和软件端口映射域名2种方法
  • Qwen2.5-vl源码解读系列:LLM的Embedding层
  • MySQL常用函数
  • 首届机器人足球运动会技术复盘:从赛场表现看智能机器人核心技术突破
  • Wireshark获取数据传输的码元速率
  • 中科米堆CASAIM提供机加工件来料自动化测量尺寸方案
  • Origin绘制气泡图|科研论文图表教程(附数据格式模板)
  • 【HarmonyOS】H5 实现在浏览器中正常跳转 AppLinking 至应用
  • Java基础 8.19
  • 基于SpringBoot的停车场管理系统【2026最新】
  • C文件/Linux内核级文件理解
  • 软考网工选择题-1
  • 路由器详解
  • Windows 8.1 补丁 KB2919355 安装方法 详细步骤
  • 【Netty4核心原理⑫】【异步处理双子星 Future 与 Promise】
  • 【AI】算法环境-显卡、GPU、Cuda、NVCC和cuDNN的区别与联系
  • Stimulsoft 发布 2025.3 版本:支持在报表计算中解释运行 C# 脚本
  • Apache ShenYu网关与Nacos的关联及如何配合使用
  • 基于Envoy的AI Gateway测试环境搭建
  • 基于决策树模型的汽车价格预测分析
  • DAY 50 预训练模型+CBAM模块
  • CiA402 伺服驱动标准与控制模式详解