思考: 本题目主要是求出列表中重复的数据,并丢找出丢失的整数。
- 对于重复的数据。我们可以对列表从大到小进行排序,找出两个相同的元素即可;或者我们采用下边程序所示的类型,可以采用
set
函数,删除集合中重复的元素,再进行求和相减即可。 - 对于丢失的数据求解。我们由题意可以知效,对于有n个元素的列表,所丢失的元素一定在前n个数据中,简而言之,对于[2,3,4,6,7,7]这个样的列表,丢失的元素必然在[1,2,3,4,5,6]。所以我们可以对[2,3,4,6,7,7]进行for循环赋值,即对应元素放在[0,0,0,0,0,0]对应的位置,结果为[0,2,3,4,0,6],所以第一个为0的位置就是丢失的元素即1。
代码如下:
class Solution(object): def findErrorNums(self, nums): """ :type nums: List[int] :rtype: List[int] """ res = [] if sum(nums)-sum(set(nums)) > 0: res.append(sum(nums)-sum(set(nums))) n = [0 for i in range(1, len(nums) + 1)] for num in nums: if num > len(nums): continue else: n[num - 1] = num for i,num in enumerate(n): if num == 0: res.append(i+1) break return res a = Solution() a.findErrorNums([2,3,4,6,7,7])