zgjja


私信TA

用户名:zgjja

访问量:12002

签 名:

X_X

等  级
排  名 147
经  验 7307
参赛次数 0
文章发表 71
年  龄 0
在职情况 学生
学  校
专  业 X_X

  自我简介:

TA的其他文章

两种方法(C++)
浏览:98

解题思路:
1.利用Python的collection.Counter库找出重复的ID;

2.找出重复ID后在原数组中删除一个重复的ID;

3.找出数组中ID的最大值和最小值,并新建一个新的迭代器,范围是[最小值(原数组), 最大值(原数组)+1],然后迭代器求和;

4.对原数组求和,然后和(3)中结果相减(大数:迭代器求和, 小数:原数组求和, 理由:原数组是缺少一项的,所以小于等于迭代器求和);

5.相减有两种情况:1)若相减结果为0,则原数组缺少的是最后一位数 +1,否则缺少的那项就是相减以后的结果。
注意事项:

参考代码:

while True:
    n = int(input().strip())
    nums = []
    for i in range(n):
        nums += list(map(int, input().strip().split()))


    import collections
    counter = collections.Counter(nums)
    rep = counter.most_common(1)[0][0]

    nums.remove(rep)
    los = max(counter) + 1
    temp = sum([_ for _ in range(min(counter), los)]) - sum(nums)
    if temp != 0:
        los = temp
    print(los, rep)


 

0.0分

4 人评分

  评论区

  • «
  • »