华为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(); } }
相关文章推荐
- 【华为OJ】【008-合并表记录】
- 【华为OJ8】合并表记录
- 华为OJ——合并表记录
- 华为OJ——合并表记录
- 华为OJ——合并表记录
- 华为OJ训练之0042-170115-整形数组排序
- 华为OJ:合并表记录
- 华为OJ(合并表记录)
- Java - 华为机试训练 - 合并表记录
- 华为OJ训练之0009-161231-统计二进制数字中1的个数(求int型数据在内存中存储时1的个数)
- 华为OJ_1956_合并表记录
- 牛客网–华为机试在线训练8:合并表记录
- 华为oj初级 合并表记录
- 华为机试在线训练-牛客网(5)合并表记录
- 华为OJ 初级:合并表记录
- 华为oj 取近似值&&合并表记录&&提取不重复的整数
- 华为OJ(合并表记录)
- 【华为OJ】合并表记录
- 【华为OJ】求int型数据在内存中存储时1的个数
- 【华为oj】整形数组合并