1. 程式人生 > >資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。 輸入描述: 先輸入鍵值對的個數 然後輸入成對的index和value值,以

資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。 輸入描述: 先輸入鍵值對的個數 然後輸入成對的index和value值,以

輸入描述:

先輸入鍵值對的個數 然後輸入成對的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;     } }