
数组系列
文章平均质量分 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 · 2380 阅读 · 0 评论 -
数组中只出现一次的数(2)(C++)
题目:一个整型数组里除了2个数字之外,其他的数字都出现了两次。请写程序找出这2个只出现一次的数字。思路:和前一篇文章类似。利用位运算的 "异或" 实现。2个相同的数异或=0 但是这样遍历完数组所有元素之后,得到的是两个只出现一次的数异或的结果。要想分别得到这两个数,还需要进一步思考。按照上一篇文章的思路,我们需要分别将这两个数放在2个不同的子数组,每个数都按原创 2015-12-01 18:07:18 · 383 阅读 · 0 评论 -
数组中只出现一次的数(1)(C++)
题目:一个整型数组里除了1个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。思路:强调数字出现的次数,而且是偶数次。这时候可以考虑利用位运算的 "异或" 实现。2个相同的数异或=0 因此,将数组所有元素异或得到的结果即为只出现一次的那个数。贴代码:#include #include using namespace std;/原创 2015-12-01 16:49:32 · 1123 阅读 · 0 评论