您的位置:首页 > 其它

华为OJ训练之0041-170115-合并数据表记录

2017-05-13 15:45 176 查看

题目

==================================================

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和

函数说明:

public int mergeRecord(List oriList, List rstList)

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。

@param oriList 原始表记录。 以List方式存放,TableRecord定义见TableRecord.java,

调用者无需对leRecord.java做任何修改

@param rstList 合并后的表记录 , 以List方式存放

@return 返回合并后表的个数

知识点 栈

运行时间限制 10M

内存限制 128

输入

先输入键值对的个数

然后输入成对的index和value值,以换行符隔开

输出

输出合并后的键值对(多行)

样例输入 4 0 1 0 2 1 2 3 4

样例输出 0 3 1 2 3 4

===================================================

一次通过 100分

=====================================================

package package02;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Scanner;

public class oj041 {

class map{
public int index;
public int value;

}

public void merge()
{

ArrayList<map> list=new ArrayList<map>();

Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();

for(int i=0;i<n;i++)
{
int key=scanner.nextInt();
int value=scanner.nextInt();
if(containsKey(list,key))
{
int index=getKeyIndex(list, key);
list.get(index).value+=value;

}
else
{
map e=new map();
e.index=key;
e.value=value;
list.add(e);
}

}

for(map m:list)
{
System.out.println(m.index);
System.out.println(m.value);
}

}

private int getKeyIndex(ArrayList<map> list, int key) {
for(int i=0;i<list.size();i++)
{
if(list.get(i).index==key) {return i;}
}
return -1;
}

private boolean containsKey(ArrayList<map> list, int key) {

for(map m:list)
{
if(m.index==key) {return true;}
}
return false;
}

public static void main(String[] args) {

new oj041().merge();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: