201403-1相反数
题目
思路
双指针法,先排序,再从两边开始计算和。
如果和大于0,右边的数大了,右指针向左移动一格;
如果和小于0,左边的数小了,左指针向右移动一格;
如果和等于0,记下,两个指针同时移动。
AC代码如下
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int n,a[500];
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
int ans=0,i=0,j=n-1;
while(i<j){
if(a[i]+a[j]==0){
ans++;
i++;
j--;
}
else if(a[i]+a[j]>0) j--;
else i++;
}
printf("%d\n",ans);
return 0;
}