一个从1到n的数组,找出里面重复的元素,以及正确的元素

一个从1到n的数组,找出里面重复的元素,以及正确的元素,注意给出的数组可能是乱序的。

解析:
1、第一步将数组用set()去重,然后在数组末尾补充一个任意元素;
2、生成一个长度为n的连续数组,1~n
3、在for循环中,用count()找出出现次数不为1的元素,即为重复元素;
4、在for循环中,比对排序后的数组的每一位和新生成数组的每一位,不一致时,新数组对应位置的元素即为正确数值
arr = input()
arr_len = len(arr)
new_arr = list(set(arr))
new_arr.append(0)
an_arr = []
res = []
#生成一个1~n的数组,用来和原数组比对
for i in range(1,arr_len+1):
    an_arr.append(i)
#获取重复元素
for i in range(arr_len):
    if arr.count(arr[i]) != 1:
        res.append(arr[i])
for i in range(arr_len):
    if new_arr[i] != an_arr[i]:
        res.append(an_arr[i])
print(res)




全部评论
这个题好熟悉啊,应该是牛客上的练习题吧
点赞 回复 分享
发布于 2022-07-15 10:31

相关推荐

09-17 10:53
四川大学 C++
loveTy:你这些技能对大厂没用,而且四川大学因为之前地铁那个事件上了不少民营企业的黑名单。 去试一试国企,他们的黑名单没民营那么狠
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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