读入整数列表后分别求最大值和最小值,两者相减得到极差。
OJ: luogu
题目 ID: P5724
难度:入门
标签:模拟列表python
日期: 2026-07-15 18:35
题意
给出 n 个整数,求这一组数的极差,也就是:
text
最大值 - 最小值思路
Python 的列表可以直接配合 max 和 min 使用。
读入第二行的所有整数后:
text
answer = max(numbers) - min(numbers)就得到极差。
如果用手写循环,也是在扫描过程中维护当前最大值和最小值。本题数据范围很小,使用内置函数更适合教学:代码短,含义也和题意完全一致。
这题是列表与内置函数练习,brute.py 会重复同一件事,因此不创建额外暴力文件。
Python 知识
/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:用list(map(int, input().split()))读取一行整数数组。/home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:本题是“第一行n,第二行数组”的标准输入格式。max(numbers)返回列表最大值。min(numbers)返回列表最小值。
代码
python
n = int(input())
numbers = list(map(int, input().split()))
answer = max(numbers) - min(numbers)
print(answer)cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-27 00:00
* update_at: 2026-07-27 00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; // 整数的个数
cin >> n;
int a[1005]; // 存储 n 个整数
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// 扫描数组同时找最大值和最小值
int max_val = a[0], min_val = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > max_val) max_val = a[i];
if (a[i] < min_val) min_val = a[i];
}
// 极差 = 最大值 - 最小值
cout << max_val - min_val << endl;
return 0;
}Pythonic 写法
max-min:
python
input()
a = list(map(int, input().split()))
print(max(a) - min(a))复杂度
max 和 min 都会扫描一遍列表,时间复杂度是
总结
极差就是最大值减最小值。Python 的 max、min 能直接表达这个定义,适合入门题中优先掌握。