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

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.xdnf.cn/news/18176.html

相关文章:

  • 监督分类——最小距离分类、最大似然分类、支持向量机
  • 第一章 认识单片机
  • 一个基于前端技术的小狗寿命阶段计算网站,帮助用户了解狗狗在不同年龄阶段的特点和需求。
  • 芯显 15.6寸G156HAE02.0 FHD 宽温液晶模组技术档案
  • Spring Boot应用实现图片资源服务
  • 【实时Linux实战系列】基于实时Linux的物联网系统设计
  • [嵌入式embed][Qt]一个新手Qt开发环境5.12.12
  • VS Code 终端完全指南
  • 机器学习中的「损失函数」:模型优化的核心标尺
  • 2025.8.19总结
  • Qt猜数字游戏项目开发教程 - 从零开始构建趣味小游戏
  • BCT8937A Class T Audio Amplifier
  • GPFS不同存储方式的优劣
  • 【数据结构】使用队列解决二叉树问题
  • 4.pod生命周期和健康检测以及使用kubectl管理Kubernetes容器平台
  • B站 韩顺平 笔记 (Day 23)
  • 力扣(电话号码的字母组合)
  • 理解JavaScript中的函数赋值和调用
  • 0.开篇简介
  • 添加右键菜单项以管理员权限打开 CMD
  • CMake进阶: CMake Modules---简化CMake配置的利器
  • 决策树(2)
  • 火山引擎,燃起了Agent的星星之火
  • Python数据分析:DataFrame,reindex,重建索引。有时候整型变浮点型,有时候又不变?
  • Unity进阶--C#补充知识点--【C#各版本的新功能新语法】C#1~4与C#5
  • 基于多级缓存架构的Redis集群与Caffeine本地缓存实战经验分享
  • BEV:隐式相机视角转换-----BEVFormer
  • JVM 面试精选 20 题(续)
  • 面试经验分享-某电影厂
  • 黎阳之光:以数字之力,筑牢流域防洪“智慧防线”