一个从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)