领扣LintCode算法问题答案-1145. 关联查询
1145. 关联查询
描述
给定一张员工表datalist1,存储员工ID,员工姓名。
给定一张员工工作时长表datalist2,存储员工ID,月份,工时。
计算每个员工1-3月每月工时及总工时。
输入描述:
[[员工ID,员工姓名],[员工ID,员工姓名],…]
[[员工ID,月份,工时,月份,工时,月份,工时],[员工ID,月份,工时,月份,工时,月份,工时],…]
输出描述:
[[员工姓名,一月份工时,二月份工时,三月份工时,总工时],[员工姓名,一月份工时,二月份工时,三月份工时,总工时],…]
- 两张表均按员工ID从小到大依次给出相关数据,返回的表中的数据也应按员工ID从小到大依次排列
样例 1:
输入:
[["1","zhangwei01"]]
[["1","01","200","02","150","03","196"]]
输出:
[["zhangwei01","200","150","196","546"]]
题解
public class Solution {
/**
* @param datalist1: a list represents the employee table
* @param datalist2: a list represents the employee hours table
* @return: Returns a list of strings represents the datalist3
*/
public List<List<String>> getList(List<List<String>> datalist1, List<List<String>> datalist2) {
// write your code here
List<List<String>> ret = new ArrayList<>();
Iterator<List<String>> i1 = datalist1.iterator();
Iterator<List<String>> i2 = datalist2.iterator();
while (i1.hasNext()) {
List<String> row = new ArrayList<>();
List<String> d1 = i1.next();
List<String> d2 = i2.next();
row.add(d1.get(1));
long h = 0;
for (int i = 2; i <= 6; i += 2) {
String hs = d2.get(i);
row.add(hs);
h += Long.parseLong(hs);
}
row.add(String.valueOf(h));
ret.add(row);
}
return ret;
}
}
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。