acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 题解#1

    这是一道经典的“最接近的两个数”问题。核心思路是:排序后,最小差值一定出现在相邻元素之间。 思路 1. 将数组排序。 2. 遍历相邻元素,计算差值a[i+1]−a[i]a[i+1] - a[i]a[i+1]−a[i],记录最小值。 3. 若出现更小的差值,更新答案;若差值相等,由于数组已排序,先遇到的相邻对分数一定更小,所以无需额外处理(自然保留第一组)。 4. 输出最小差值和对应的两个数。 时间复杂度O(nlog⁡n)O(n \log n)O(nlogn),对于n≤106n \le 10^6n≤106完全够用。 C++代码: PYTHONPYTHONPYTHON代码:

    userId_undefined
    黄昏中的落雁
    9月全勤卷王秩序白银快乐小狗
    2阅读
    0回复
    1点赞
  • C++代码

    #include <iostream> #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<long long> a(n); for(int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end()); long long b = 1000000000000000010; long long x, y; for( int i = 1; i < n; i++ ) { long long d = a[i] - a[i-1]; if( d < b ) { b = d; x = a[i-1]; y = a[i]; } else if( d == b ) { if( a[i-1] < x ) { x = a[i-1]; y = a[i]; } } } cout << b << endl << x << " " << y << endl; return 0; }

    userId_undefined
    𓆩༒༺𓂀孙晨睿𓂀༻༒𓆪
    字符串·魔法使ASCII炼金师快排信徒→排序之神冒泡宗师→排序元老倔强青铜
    0阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页