优化程序:#include<bits/stdc++.h> using namespace std; int a[200005],b[200005],c[200005]; int main() { int n,m,sum=1e9; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i]>b[j]) sum = min(sum,a[i]-b[j]); if(a[i]<b[j]) sum = min(sum,b[j]-a[i]); if(a[i]==b[j]){ cout<<0; return 0; } } } cout<<sum; return 0; }
时间: 2024-04-14 18:29:26 浏览: 91
在这段代码中,你可以优化内存使用和算法效率。以下是一些改进的建议:
1. 使用合适的数据类型:根据题目要求,可以使用`int`代替`long long`来节省内存。
2. 减少数组的大小:根据题目给定的数据范围,可以将数组`a`、`b`和`c`的大小减小到合适的范围,节省内存空间。
3. 使用一次遍历:可以通过一次遍历数组来找出最小的差值,而不是嵌套两次循环遍历。
4. 使用`abs()`函数:可以使用`abs()`函数来计算绝对值,而不是使用`if`语句来判断大小。
下面是优化后的代码示例:
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[1005], b[1005];
int main()
{
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++){
cin >> a[i];
}
for(int i = 0; i < m; i++){
cin >> b[i];
}
sort(a, a + n);
sort(b, b + m);
int i = 0, j = 0, minDiff = INT_MAX;
while(i < n && j < m){
minDiff = min(minDiff, abs(a[i] - b[j]));
if(a[i] < b[j]){
i++;
}
else{
j++;
}
}
cout << minDiff << endl;
return 0;
}
```
这个优化后的代码将遍历一次数组,找到最小的差值,并且使用`abs()`函数计算绝对值。这样可以减少内存使用,并提高算法效率。
阅读全文