题解 | #合并表记录#

合并表记录

http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

size = input()
size = int(size)
b = []
def merge_in_b (a , b): #用来将新输入的索引和数字输入到汇总的列表中
    b_1 = b
    b_size_1 = len(b_1)
    if b_size_1 == 0:
        b_1.append(int(a[0]))
        b_1.append(int(a[1]))
        return b_1
    flag = 0
    k = 0
    for j in range(int(b_size_1/2)):
        if(int(a[0]) == b_1[k]):
            b_1[k+1] += int(a[1]) #b[0]存储第一个索引,b[1]存储第一个索引对应的数,以此类推
            flag = 1
            break
        k = k + 2 #每次跳过存储数据的部分
    if(flag == 0):
        b_1.append(int(a[0]))
        b_1.append(int(a[1]))
                  
                   
    return b_1


for i in range(size):
    a = input()
    a = a.split()#以空格将a隔开,得到的是列表形式
    b = merge_in_b (a , b)
b_size_2 = len(b)
c = {} #最后以字典的形式存储合并后的列表(为了排序)
k = 0
for i in range(int(b_size_2/2)):
    c[b[k]] = b[k+1]
    k = k + 2
d = sorted(c.items(),key=lambda x:x[0])#sorted(c.items(),key =lambda x:x[0])得到以key排序后的二元组形式列表
len_d = len(d)

for i in range(len_d):
    print(d[i][0],d[i][1])#二元组的第一个值是索引,第二个是对应的值

PS:本题最重要的是存储合并后的索引和值对的形式,形式不同,算法不同

华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
程序员牛肉:这一眼假啊,基本上都是骗人的,不然就涉及到职位贪腐了,就像之前华为的OD事件,看你运气好不好了
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务