Day 34100 (华为机试)合并表记录

tech2023-01-20  108

写在前面的话

有个感觉,做题的过程,像是抽象地实现底层原理;

无论最终结果如何,都会有所收获,加深对于底层原理的理解;

从今天开始,打算弄个错题本~

 

(一)题目

题目描述

数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述:

先输入键值对的个数

然后输入成对的index和value值,以空格隔开

输出描述:

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

示例1

输入

4

0 1

0 2

1 2

3 4

输出

0 3

1 2

3 4

 

(二)解题思路

1、本质上是相同内存地址的数值相加

实现的方式有蛮多,比如将得到的数据,存到数组中,遍历合并相同的arr[0](即索引)

我这里实现的是用数组索引来实现的,定义数组,当数组;

并将第一个arr[0]真的存储为数组的索引,如果没有值,就添加,如果索引中有值,则相加

 

2、将得到的数组,按照索引,数据的方式打印即可

tmp.forEach((data,index)=>{

    console.info(index,data)

})

 

3、本地调试代码

 

本地和在线调试代码的原理是一样的,区别是两者的数据输入方式是不一样的

 

在线调试代码

 

每次看到通说的弹窗,都会比较开心~

通过弹窗

 

看了下其他大神,通过的代码,从占用内存上,已经达到最优内存占比。

但运行时间多了2ms~

之后需要看看,时间复杂度怎么可以降下来~

 

参考链接:

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201?tpId=37&&tqId=21231&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

 

以上

最新回复(0)