1 条题解

  • 0
    @ 2026-6-19 10:30:40

    📝 题目大意

    给定 NN 个整数,判断它们是否全部相等,若全相等输出 Yes,否则输出 No

    💡 解题思路

    1. 题目分析N100N \le 100Ai100A_i \le 100,数据范围极小,任何 O(N)O(N) 甚至 O(NlogN)O(N \log N) 的做法都能轻松通过。核心是判断所有元素是否相等。
    2. 算法推导:将数组排序后,若最小值 a.front() 等于最大值 a.back(),则说明所有元素都相等(因为排序后首尾相同意味着中间所有元素也与首尾相同)。也可以直接遍历数组,检查是否每个元素都与第一个元素相等,但排序法代码更简洁。
    3. 边界与细节N=2N=2 时直接比较两个元素即可,排序法同样适用。注意输出大小写:是 Yes/No 而非 YES/NO

    ⏱️ 复杂度分析

    • 时间复杂度O(NlogN)O(N \log N)(排序开销),若用遍历法可做到 O(N)O(N)
    • 空间复杂度O(N)O(N)(存储数组)。

    💻 标准代码 (C++)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        vector<int> a(n);
        // 读入 N 个整数
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        // 排序后,若首尾相等则所有元素都相等
        sort(a.begin(), a.end());
        if (a.front() == a.back()) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    744
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者