03.06 C语言这道题的这种解法你会吗?C语言欢乐解题时光教你潇洒解题法

题目描述


C语言这道题的这种解法你会吗?C语言欢乐解题时光教你潇洒解题法

在一个整数数组中1个数出现了3次,其余的数都出现了2次,请找出出现3次的数。

常规解法

用两个循环,外层循环每次提供一个数,内层循环遍历数组进行比对,用另外的变量存储相等的次数,内层循环结束之后,如果存储次数的变量等于3,就输出这个元素,然后退出,否则外层循环提供下一个值,继续上述过程。

C语言这道题的这种解法你会吗?C语言欢乐解题时光教你潇洒解题法

还有其他常规解法这里不一 一例举

潇洒解法

其实本题采用位运算中异或是最简单的。 讲之前要明确几个知识点:

(1)整数与0异或为本身。与本身异或为0,即本身的奇数次异或还为本身,偶数次异或为0。

(2)异或运算符合结合律和交换律。

全部异或后,出现2次数的异或都为0,只剩出现3次的数了。

C语言这道题的这种解法你会吗?C语言欢乐解题时光教你潇洒解题法

是不是很简单?

尾言

如果阁下没有学习位运算不妨关注小编的零基础视频教程:

通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势,人人都可以学习的C语言课程


分享到:


相關文章: