Javascript程序检查排序数组中的多数元素
问题:编写一个函数来查找给定整数 x 在 n 个整数的排序数组中出现的次数是否超过 n/2 次。
基本上,我们需要编写一个函数说 isMajority(),它接受一个数组 (arr[] )、数组的大小 (n) 和一个要搜索的数字 (x) 作为参数,如果 x 是多数元素则返回 true(现在更多大于 n/2 次)。
例子:
Input: arr[] = {1, 2, 3, 3, 3, 3, 10}, x = 3
Output: True (x appears more than n/2 times in the given array)
Input: arr[] = {1, 1, 2, 4, 4, 4, 6, 6}, x = 4
Output: False (x doesn't appear more than n/2 times in the given array)
Input: arr[] = {1, 1, 1, 2, 2}, x = 1
Output: True (x appears more than n/2 times in the given array)
方法 1(使用线性搜索)
线性搜索第一次出现的元素,一旦找到它(让在索引 i 处),检查索引 i + n/2 处的元素。如果元素存在于 i+n/2 处,则返回 1,否则返回 0。
输出:
4 appears more than 3 times in arr[]
时间复杂度: O(n)
方法 2(使用二分搜索)
使用二进制搜索方法查找给定数字的第一次出现。二进制搜索的标准在这里很重要。
Javascript
输出
3 appears more than 3 times in arr[]
时间复杂度:O(1)
辅助空间: O(1)
有关详细信息,请参阅有关在排序数组中检查多数元素的完整文章!