合并表记录
2021-02-27 本文已影响0人
雨的印记2012
牛客网(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]);
}
}
}