【深基4.例2】找最小值

GitHub跳转原题关系图返回列表

读入整数列表后直接用 min 得到最小值。

OJ: luogu

题目 ID: P5718

难度:入门

标签:python入门枚举输入输出

日期: 2026-07-15 18:17

题意

给出 n 个整数,输出其中的最小值。

思路

Python 内置 min 可以直接求可迭代对象中的最小值。读入第二行整数列表后,输出 min(numbers) 即可。

brute.py 不适合这题,因为内置最小值函数就是完整解法;若手写循环,本质也只是逐个比较。

Python 知识

  • n = int(input()) 读取个数;本题代码不必使用 n,因为输入保证第二行给出对应数量。
  • list(map(int, input().split())) 读取整数列表。
  • min(numbers) 返回列表中的最小值。

对应的本地 Python 笔记:

  • /home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:整数列表输入。
  • /home/rainboy/mycode/hugo-blog/content/program_language/python/math_tools.md:最值维护思想。
  • /home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:一行整数数组输入。

代码

python
n = int(input())
numbers = list(map(int, input().split()))

print(min(numbers), end="")
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 min_val = a[0];
    for (int i = 1; i < n; i++) {
        if (a[i] < min_val) {
            min_val = a[i];
        }
    }
    cout << min_val << endl;
    return 0;
}

Pythonic 写法

min:

python
input()
print(min(map(int, input().split())))

复杂度

min 会检查所有 n 个数,时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)。如果边读边维护最小值,可以把额外空间降到 O(1)O(1)

总结

Python 中求最小值优先想到 min。当题目数据很小,先写清楚输入列表和 min(numbers),比手写循环更适合入门学习。