统计队列中元素差值是200倍数的方案数
统计队列中元素差值是200倍数的方案数
给定一个长度为 n 的队列, 我们从中任选两个元素, 如果两个元素的差恰好是 200 的倍数, 则这是一种合法方案。
输入格式
第一行一个整数 n, 第二行 n 个整数 a i 。
输出格式
一共有多少种取数方案。
思路一:
首先,我们可以先统计每个元素对200取余的结果,并记录下每个余数出现的次数。然后,遍历余数出现次数的记录,假设当前余数出现了x次,那么我们可以选择其中两个元素,它们的差值对200取余的结果必然为0,即它们可以组成一种合法方案。那么,对于这个余数出现了x次的情况,可以组成的合法方案数为C(x, 2) = x*(x-1)/2。最后,我们将所有余数出现次数的合法方案数相加,即可得到最终的结果。
时间复杂度分析:
统计每个元素对200取余的结果的时间复杂度为O(n)。 遍历余数出现次数的记录的时间复杂度为O(200)。 因此,总的时间复杂度为O(n)。
思路二:
我们可以将所有元素对200取余的结果放入一个长度为200的数组中,然后统计每个余数出现的次数。接下来,我们遍历余数出现次数的记录,假设当前余数出现了x次,那么我们可以选择其中两个元素,它们的差值对200取余的结果必然为0,即它们可以组成一种合法方案。那么,对于这个余数出现了x次的情况,可以组成的合法方案数为C(x, 2) = x*(x-1)/2。最后,我们将所有余数出现次数的合法方案数相加,即可得到最终的结果。
时间复杂度分析:
统计每个元素对200取余的结果的时间复杂度为O(n)。 遍历余数出现次数的记录的时间复杂度为O(200)。 因此,总的时间复杂度为O(n)。
具体实现见代码部分。
原文地址: https://www.cveoy.top/t/topic/o7lV 著作权归作者所有。请勿转载和采集!