更具体地讲,某数组长度为 N+1(乱序),整个数组取遍 1~N 的全部 N 个数,显然其中一个数出现了两次,找出这个数;
(1)将这 N + 1 个数,以及 1 ~ N 这 N 个数(数组中出现 2 次 ⇒ 出现三次),整体异或,最终得到的结果即为这个出现两次的数;
(2)全部相加 - (1+N)*N/2
- 注意相加(相乘)时数值溢出的可能;
本文共 220 字,大约阅读时间需要 1 分钟。
更具体地讲,某数组长度为 N+1(乱序),整个数组取遍 1~N 的全部 N 个数,显然其中一个数出现了两次,找出这个数;
(1)将这 N + 1 个数,以及 1 ~ N 这 N 个数(数组中出现 2 次 ⇒ 出现三次),整体异或,最终得到的结果即为这个出现两次的数;
(2)全部相加 - (1+N)*N/2
转载于:https://www.cnblogs.com/mtcnn/p/9423604.html