此题其实和之前做过的single number很类似,用異或的方式其实可以很快的求解,但一时没想到,所以还是采用了笨办法完成的求解.异或计算的原理如下:
A^A=0(异或的归律)所以A^B^A=B,由题目可知要找到唯┅多余的元素,只需要把全部元素依次求一遍异或计算,最后得到的结果,就是唯一多余的元素,代码如下:
另外对于异或计算,这位博主的博客写的挺不错的,mark一下:
学而时习之,不然还会在同一块石头上被绊倒两次
此题其实和之前做过的single number很类似,用異或的方式其实可以很快的求解,但一时没想到,所以还是采用了笨办法完成的求解.异或计算的原理如下:
A^A=0(异或的归律)所以A^B^A=B,由题目可知要找到唯┅多余的元素,只需要把全部元素依次求一遍异或计算,最后得到的结果,就是唯一多余的元素,代码如下:
另外对于异或计算,这位博主的博客写的挺不错的,mark一下:
学而时习之,不然还会在同一块石头上被绊倒两次
printf("请输入密钥,并牢记解密时要再次输入:");//只偠再对加密的文件再进行一次异或运算就得到源文件
你对这个回答的评价是?
版权声明:本文为博主原创文章欢迎转载和评论!谢谢 /W_ILU/article/details/
分析:指定了数组长度而不增加空间成本则不能新建新的数组,实现数组倒置可以借助第三变量互换数组元素但此方法也不是最高效的,可以采用异或运算比较接近底层运算速度快
也许有些朋友会对这个异或运算比較生疏,异或的意思就是同取0异取1
但此方法有局限性,当 A + B 超出 A 的范围时会报错且加减没有异或运算快,故最优解还是异或运算