1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?
主要原理就是异或的两个特性:x^x=0;x^0=x;a^b=b^a
假设:没有重复元素x的数组异或结果为T,则包含x的数组异或之和为T^x;连着进一步异或:T^(T^x)=T^T^x=0^x=x即为重复数字。
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?
主要原理就是异或的两个特性:x^x=0;x^0=x;a^b=b^a
假设:没有重复元素x的数组异或结果为T,则包含x的数组异或之和为T^x;连着进一步异或:T^(T^x)=T^T^x=0^x=x即为重复数字。