作业帮 > 综合 > 作业

pascal 给出一个序列 求出数列中相同数字出现的 次数最多的数字和其出现次数 (n

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 14:04:56
pascal 给出一个序列 求出数列中相同数字出现的 次数最多的数字和其出现次数 (n
10亿的数列读入要多久呢- -
再问: 好像有看过别人用位运算来做 不然1亿以内也可 用到xor??
再答: 用 异或 的那个是叫你在10^8个数字中找出唯一个值出现一次的数字(其他的数字都出现两次). 因为涉及统计,这题无论如何也要排序,(如果数字范围够小,可以使用hash法), 但是关键问题是数字个数太多了.除非这题的数字范围是10^7范围内的,可以使用hash完成一亿个以内数字的统计,否则排序算法都会超时的. 10亿就更不说了..光是读入都要10秒 - -
再问: 我弄错了sorry xor是用在你说的这一题 如何在10^8个数字中找出仅有的一个出现过奇数次的数字(其他全是偶数次) 这个咋做
再答: 那很简单的,一句话就说完了: 从头到尾异或一次 就是设a = 0 然后每读入一个数k设a = a xor k 最后输出a就可以 因为xor有一个性质 (a xor b) xor b = a 而这中间加任何的其他异或运算(只要不是异或b)都不影响这个性质.