题目描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入:4
0 1
0 2
1 2
3 4
输出:0 3
1 2
3 4
示例2
输入:3
0 1
0 2
8 9
输出:0 3
8 9
题解
下面展示本人题解思路代码。
/*
parserInt(string,redix) string必需参数,表示要解析的字符串;radix可选,表示要解析数字的基数。
*/
const rl = require("readline").createInterface({ input: process.stdin })
var iter = rl[Symbol.asyncIterator]()
const readline = async () => (await iter.next()).value
void async function () {
// Write your code here
let num = await readline()
let obj = {}
while (line = await readline()) {
let arr = line.split(' ')
let key = parseInt(arr[0])
let value = parseInt(arr[1])
//判断obj中是否存在该key值,有则取出对应value值后再叠加,无则直接存入obj对象中
if (obj[key]) {
obj[key] = parseInt(obj[key] + value)
} else {
obj[key] = value
}
}
//按要求格式输出
for (let item in obj) {
console.log(item + ' ' + obj[item])
}
}()
文章系原创,在阅读过程中如若有误,劳请指正;如若有妙解、疑惑也欢迎大家和我交流,感谢!