题目描述
1个整数数组中1个个数出现3次,剩下的数都出现2次,请找出出现3次的数。
常规解法
使用两个循环。 外侧循环每次提供一个数,内侧循环遍历数组进行比对,用另一个变量存储相同的次数。 内部循环结束后,如果存储次数的变量等于3,则输出该元素并结束,否则外部循环提供以下值,继续上述过程。
的其他常用解法,在此不举一例
潇洒解法
其实正题是比特运算中不同的,或者采用了最简单的。 说话之前,请明确几个知识点。(1)整数和0的异或是其本身。 与自身的“异或”为0,即自身的奇数阶“异或”仍为自身,偶数次“异或”为0。
)2)异或运算符合结合律和交换律。
全部异或后,出现两次的异或都为0,只剩下出现三次的数。
不是很简单吗?
尾言
如果你没有学习位运算,请关注小编的零度基点视频教程:《C语言51课视频教程合集》
《C语言十大新手练手项目实战》
《C++45课视频教程》
《C语言数据结构那点事儿》
易懂、深刻、易懂,一个视频只讲一个知识点。 视频不深奥,不需要钻研,无论是公交车、地铁还是厕所都可以看,随时随地摆好姿势,谁都可以学习的c语言课程