题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str=null;
        while((str=br.readLine())!=null){//输入非空进行
            int n=Integer.parseInt(str);//将输入n转为int型
            int indexs[]=new int[n];//构建一个长为n的indexs数组 
            for(int i=0;i<n;i++){
                indexs[i]=-1;
            }//数组indexs值全=-1
            Map<Integer,Integer> map=new HashMap<>();//Map接口,表示键值对的存储结构,此为添加一个键值对
            for(int i=0;i<n;i++){//把该过程循环四次,循环内容和i无关
                String v_k[]=br.readLine().split(" ");//用指定的分隔符(如空格)调用spilt方法对字符串进行分割
                int index=Integer.parseInt(v_k[0]);//存入键,提取数组中的值,index是最新的数值
                int value=Integer.parseInt(v_k[1]);//存入值,提取数组中的值,value是最新的数值
                for(int j=0;j<n;j++){
                    if(indexs[j]==-1||indexs[j]==index){
                        indexs[j]=index;
                        break;//break是终止循环语句,例如for循环和while循环,不是终止if语句
                    }
                }//找到k_y对要放进去的数组
                map.put(index,map.getOrDefault(index,0)+value);//在for循环中,如果没有重复的键,则读写最新的值,如果有重复的键,则把新值加在旧值上重新读写数据(重新添加键值对)getOrDefault(index,0),没有index键,则返回值为0,有则返回值
            }
            Arrays.sort(indexs);//对数组进行从小到大的排序
            for(int i=0;i<n;i++){
                if(indexs[i]!=-1){//剔除数组中值为-1的数
                    int value=map.get(indexs[i]);//取值
                    System.out.println(indexs[i]+" "+value);//输出值 
                }
            }
        }
    }
}

全部评论

相关推荐

只写bug的程序媛:才15,我招行20多万,建设银行50多万,说放弃就放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务