酷代码 AI
菜单
服务商

已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离 输入 第一行为两个整数 ,分别代表数组f[], g[]的长度。 第二行有m个元素,为数组f[]。 第三行有n个元素,为数组g[]。 每个元素的数据范围在范围 内 输出 数组的最短距离 样例输入 复制 3 3 1 4 10 -1 3 7 样例输出 复制 1

```cpp #include <iostream> #include <algorithm> #include <cmath> #include <climits> using namespace std; int main() { int m, n; cin >> m >> n; int f[m], g[n]; for (int i = 0; i < m; i++) { cin >> f[i]; } for (int i = 0; i < n; i++) { cin >> g[i]; } int minDist = INT_MAX; int i = 0, j = 0; while (i < m && j < n) { int dist = abs(f[i] - g[j]); minDist = min(minDist, dist); if (f[i] < g[j]) { i++; } else { j++; } } cout << minDist << endl; return 0; } ``` 代码说明: 1. 输入两个数组的长度和元素 2. 使用双指针法遍历两个已排序数组 3. 计算当前指针位置元素的绝对差 4. 更新最小距离 5. 移动指向较小元素的指针 6. 输出最小距离 时间复杂度: O(m+n) 空间复杂度: O(1)(不计输入数组) 示例运行: 输入: ``` 3 3 1 4 10 -1 3 7 ``` 输出: ``` 1 ``` 解释:数组f[]和g[]中,4和3的差绝对值最小为1。 [2026-01-04 12:13:10 | AI问答 | 334点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多