![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组系列
文章平均质量分 67
sequenceGO
dev
展开
-
数组中出现次数超过一半的数字(C++)
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。如果不存在则输出0。 如 数组{1,2,3,2,2,2,5,4,2}。数字2在数组中出现了5次,超过数组长度的一半,最终输出2。 思路: 目前只找到O(n)的解法。初始认为数组第一个数就是目标数(target)。 之后遍历数组后面的元素,如果等于目标数,计数++; 否则计数--; 如果发现目标数的计数原创 2015-12-01 15:37:30 · 2305 阅读 · 0 评论 -
数组中只出现一次的数(2)(C++)
题目: 一个整型数组里除了2个数字之外,其他的数字都出现了两次。请写程序找出这2个只出现一次的数字。 思路: 和前一篇文章类似。利用位运算的 "异或" 实现。 2个相同的数异或=0 但是这样遍历完数组所有元素之后,得到的是两个只出现一次的数异或的结果。 要想分别得到这两个数,还需要进一步思考。 按照上一篇文章的思路,我们需要分别将这两个数放在2个不同的子数组,每个数都按原创 2015-12-01 18:07:18 · 346 阅读 · 0 评论 -
数组中只出现一次的数(1)(C++)
题目: 一个整型数组里除了1个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 思路: 强调数字出现的次数,而且是偶数次。这时候可以考虑利用位运算的 "异或" 实现。 2个相同的数异或=0 因此,将数组所有元素异或得到的结果即为只出现一次的那个数。 贴代码: #include #include using namespace std; /原创 2015-12-01 16:49:32 · 1077 阅读 · 0 评论