寻找一个长度为n+1,且值为1~n的数组中相同的两个元素最优算法
作者:互联网
1.数学方法:
将所有元素相加,加和减去1~n之和,所得只差为重复元素值。
时间复杂度:O(n)
空间复杂度:O(1)
2.异或运算
2.1异或运算应用简介
异或运算也被称为没有进位的加法。
计算规则:相同为0,不同为1;
e.g.
1 xor 1=0 xor 0=0,
1 xor 0=1 xor 0=1
总结:
1.与0异或=原值不变,与1异或=原值取反。
2.自己异或自己=置零
2.2应用:(本题)
假设:A[5]=[a,b,c,d,a],B[4]=[a,b,c,d]
则将A中所有元素异或=a xor b xor c xor d xor a=b xor c xor d
再将B中所有元素异或=a xor b xor c xor d
最后再将所得两个结果异或=a
找到重复值a。
时间复杂度:O(n)
空间复杂度:O(1)
3.其他方法
方法众多,但是上面两种应该是时空复杂度最低的了,因此不再赘述,若有相当或者更好的方法欢迎补充。
标签:且值,原值,xor,运算,复杂度,元素,异或,算法,最优 来源: https://blog.csdn.net/weixin_44295653/article/details/112627593