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匹配不成功,如果左边的整数小于右边,则右边位置向内移动一位


代码:

import java.util.Arrays;
import java.util.Scanner;
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例题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值