美文网首页
合并表记录

合并表记录

作者: 雨的印记2012 | 来源:发表于2021-02-27 11:41 被阅读0次

牛客网(java实现)


问题描述:

牛客:数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)

问题分析:

思路:判断小数点后一位是否大于5;
1、截取字符;
2、扩大,求差值。

算法实现:

参考代码:

import java.util.*;

public class Main {
        
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int count = input.nextInt();
        /*
        //法1
        Map<Integer,Integer> map = new TreeMap<Integer,Integer>(
            //new Comparator(Integer,Integer){
                new Comparator<Integer>(){
            @Override
            public int compare(Integer i, Integer j)
            {
                return i-j;
            }
        });
        int a,b;
        for (int i=0; i<count; i++)
        {
            a = input.nextInt();
            b = input.nextInt();
            if (map.containsKey(a))
            {
                b = b + map.get(a);
                map.remove(a);
                map.put(a,b);
                //map.put(a, map.get(a) + value);
            }else
            {
                map.put(a,b);
            }
        }
        
        for (Integer i : map.keySet())
        {
            System.out.println(i + " " + map.get(i));
        }
        */
        //法2
        int[] arr = new int[10001];
        int index;
        for (int i=0; i<count; i++)
        {
            index = input.nextInt();
            arr[index] += input.nextInt();
        }
        for (int i=0; i<10001; i++)
        {
            if (arr[i]!=0)
                System.out.println(i + " " + arr[i]);
        }
    }
}

相关文章

网友评论

      本文标题:合并表记录

      本文链接:https://www.haomeiwen.com/subject/dvayxltx.html