要求:
给定一个由n-1个整数组成的未排序数组序列,其元素都是1到n中不同整数。寻找数组序列中缺失整数
分析:
方法一:
累加求和:假设缺失数字是x,那么这n-1个数一定是1~n之间除了x以外所有数,试想一下,1~n一共n个数的和是可以求出来的,数组中的元素和也是可以求出来的,二者相减,其值不就是缺失数字x 的值?
方法二:
异或法:简单说就是在进行异或运算时,当参与运算的两个数相同时,异或结果为假,当参与异或运算的两个数不同时,异或结果为真。1~n异或结果为a=1^2^3...^n,假设数组中缺失的数为m,那么数组中这n-1个数异或结果为b=1^2^3...(m-1)^(m+1)...^n。由此可知,a^b=(1^1)^(2^2)^(3^3)...(m-1)^(m-1)^m^(m+1)^(m+1)^...^(n^n)=m。
实现代码:
#方法一
# -*- coding:utf-8 -*-
def getNum(arr):
if arr == None or len(arr) <= 0:
print("参数不合理")
return -1
suma = 0
sumb = 0
i = 0
while i < len(arr):
suma