📌  相关文章
📜  在频率大于或等于n / 2的排序数组中查找元素。

📅  最后修改于: 2021-04-23 17:41:56             🧑  作者: Mango

给定长度为n的排序数组,请在数组中查找出现大于或等于n / 2次的数字。可以肯定的是,这样的元素总是存在的。
例子:

Input :  2 3 3 4
Output : 3

Input :  3 4 5 5 5 
Output : 5

Input : 1 1 1 2 3
Output : 1

为了找到该数字,我们遍历数组,并检查数组中每个元素的频率是否大于或等于n / 2,但它需要额外的空间,并且时间复杂度将为O(n)。
但是我们可以看到,如果排序数组中存在大于或等于n / 2次的数字,则该数字必须出现在位置n / 2处,即a [n / 2]。

C++
// C++ code to find majority element in a
// sorted array
#include 
using namespace std;
 
int findMajority(int arr[], int n)
{
    return arr[n / 2];
}
 
int main()
{
    int arr[] = { 1, 2, 2, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << findMajority(arr, n);
    return 0;
}


Java
// Java code to find majority element in a
// sorted array
public class Test {
 
    public static int findMajority(int arr[], int n)
    {
        return arr[n / 2];
    }
    public static void main(String args[])
    {
        int arr[] = { 1, 2, 2, 3 };
        int n = arr.length;
        System.out.println(findMajority(arr, n));
    }
}


Python 3
# Python 3 code to find
# majority element in a
# sorted array
 
def findMajority(arr, n):
 
    return arr[int(n / 2)]
 
# Driver Code
arr = [1, 2, 2, 3]
n = len(arr)
print(findMajority(arr, n))
 
# This code is contributed by Smitha.


C#
// C# code to find majority element in a
// sorted array
using System;
 
public class GFG {
 
    public static int findMajority(int []arr, int n)
    {
        return arr[n / 2];
    }
     
    // Driver code
    public static void Main()
    {
         
        int []arr = { 1, 2, 2, 3 };
        int n = arr.Length;
         
        Console.WriteLine(findMajority(arr, n));
    }
}
 
// This code is contributed by vt_m.


PHP


Javascript


输出:

2