CCF--相反数--用JAVA语言实现

题目要求:

问题描述
  有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。
输入格式
  第一行包含一个正整数 N。(1 ≤ N ≤ 500)。
  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
输出格式
  只输出一个整数,即这 N 个数中包含多少对相反数。
样例输入
5
1 2 3 -1 -2
样例输出
2


思路:
1.将输入的数放入数组中,然后进行排序
2.左边大于0并且右边小于0循环结束(说明左右交叉了)
3.左右两边向里面进行匹配
3.1匹配成功,则左右同时向里面靠拢
3.1匹配不成功,如果左边的整数大于右边,则左边位置向内移动一位
3.2匹配不成功,如果左边的整数小于右边,则右边位置向内移动一位


代码:

public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 0;//累加器
Scanner sc = new Scanner(System.in);
//存入数组并排序
int arr [] = new int[sc.nextInt()];
for(int i =0;i<arr.length;i++){
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
int left=0;
int right=arr.length-1;//左,右
while(arr[left]<0 && arr[right] >0 ){
if((-arr[left])==arr[right]){
a++;
left++;
right--;
}else if((-arr[left])>arr[right]){
left++;
}else if((-arr[left])<arr[right]){
right--;
}
}
System.out.println(a);
}
}
如有不对,请指出批评...后续继续更新用java实现ccf例题

猜你喜欢

转载自blog.csdn.net/weixin_41744556/article/details/80932463