LCR 177. 撞色搭配
整数数组 sockets 记录了一个袜子礼盒的颜色分布情况,其中 sockets[i] 表示该袜子的颜色编号。礼盒中除了一款撞色搭配的袜子,每种颜色的袜子均有两只。请设计一个程序,在时间复杂度 O(n),空间复杂度O(1) 内找到这双撞色搭配袜子的两个颜色编号。
示例 1:
**输入:**sockets = [4, 5, 2, 4, 6, 6]
输出:[2,5] 或 [5,2]
示例 2:
**输入:**sockets = [1, 2, 4, 1, 4, 3, 12, 3]
输出:[2,12] 或 [12,2]
提示:
2 <= sockets.length <= 10000
寻找两个无配对的数字,因为对时间空间复杂度的要求,无法使用哈希表,我们只能在原数组上处理
需要知道相同数字异或结果为零,
假设两个数字为a,b,当我们把所有数字异或后,得到的结果就是a^b
再想分别得到a和b我们需要有一个条件,在异或时能把a,b分开
考虑到a,b的二进制表示,a^b的某一位为0说明a,b该位值相等,为一则不等,那我们就可以根据为一的那位值来区分a,b
1 | class Solution { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.




