输入描述:
先输入键值对的个数 然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner str = new Scanner(System.in); int n = Integer.parseInt(str.nextLine()); int key[]=new int[n]; int value[]=new int[n]; for(int i=0;i<n;i++){ String input=str.nextLine(); String[] input2=input.split(" "); key[i]=Integer.parseInt(input2[0]);//把输入的index值存入数组key中 value[i]=Integer.parseInt(input2[1]);//把输入的value值存入数组value中 } bucketMap(key,value); str.close(); } public static void bucketMap(int[] key, int[] value){//利用桶排序合并键值相同的记录,并输出 int size=key.length; int max=maxNumber(value); int[] map=new int[max]; for(int i=0;i<size;i++){ map[key[i]]+=value[i];//合并键值相同的记录 } for(int j=0;j<map.length;j++){ if(map[j]!=0){ System.out.println(j+" "+map[j]); } } } public static int maxNumber(int[] value){//求键值对应数组中数值最大值,用于定义桶的个数 int length=value.length; int max=value[0]; for(int i=1;i<length;i++){ if(max<value[i]){ max=value[i]; } } return max; } }