解题思路:
读取输入后排序,用双指针从两端向中间找和为目标值的数对,根据当前和调整指针
参考代码:
#include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; std::vector<int> nums(n); for (int i = 0; i < n; ++i) { std::cin >> nums[i]; } int m; std::cin >> m; std::sort(nums.begin(), nums.end()); int left = 0, right = n - 1; while (left < right) { int sum = nums[left] + nums[right]; if (sum == m) { std::cout << nums[left] << " " << nums[right] << std::endl; return 0; } else if (sum < m) { left++; } else { right--; } } std::cout << "No" << std::endl; return 0; }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:677 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1091 |
C二级辅导-进制转换 (C语言代码)浏览:657 |
矩阵乘法 (C++代码)浏览:1662 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:700 |
小明A+B (C语言代码)浏览:1316 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:793 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1072 |
Cylinder (C语言描述,蓝桥杯)浏览:1279 |