Skip to main content

Check If a Number Is Majority Element in a Sorted Array - Solution & Explanation

EasyPremiumFree on FleetCodeArrayBinary Search11 min readAsked at: Salesforce
Practice this problem

Problem Statement

Given an integer array nums sorted in non-decreasing order and an integer target, return true if target is a majority element, or false otherwise.

A majority element in an array nums is an element that appears more than nums.length / 2 times in the array.

 

Example 1:

Input: nums = [2,4,5,5,5,5,5,6,6], target = 5
Output: true
Explanation: The value 5 appears 5 times and the length of the array is 9.
Thus, 5 is a majority element because 5 > 9/2 is true.

Example 2:

Input: nums = [10,100,101,101], target = 101
Output: false
Explanation: The value 101 appears 2 times and the length of the array is 4.
Thus, 101 is not a majority element because 2 > 4/2 is false.

 

Constraints:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i], target <= 109
  • nums is sorted in non-decreasing order.

Approach Overview

Problem Overview: You are given a sorted integer array and a target value. The task is to determine whether the target appears more than n / 2 times. Because the array is already sorted, the occurrences of any value are grouped together, which allows efficient searching using binary search instead of scanning the entire array.

Approach 1: Binary Search (O(log n) time, O(1) space)

Use binary search to locate the first occurrence of the target. Once you know where the target begins, compute the index start + n/2. If that index is within bounds and the value at that position is still the target, the element appears more than half the time. The insight comes from the sorted property: if a number is a majority element, the element exactly n/2 positions ahead of its first occurrence must also be the same value. This avoids counting occurrences and leverages the structure of the array.

Approach 2: Binary Search (Optimized) (O(log n) time, O(1) space)

Another approach performs two binary searches to find the leftmost and rightmost occurrences of the target. The difference between these indices gives the total frequency of the element. If right - left + 1 > n/2, the target is the majority element. This technique is a classic pattern for counting duplicates in a sorted array using binary search. While it performs two searches instead of one, the complexity remains logarithmic and the implementation is straightforward to reason about.

Recommended for interviews: The single-search majority check (finding the first occurrence and verifying the n/2 offset) is the most elegant solution. It demonstrates that you understand how sorted order enables positional reasoning instead of brute-force counting. Showing the two-boundary binary search method is also acceptable, but the optimized offset trick usually stands out as the cleanest solution.

Approach 1: Binary Search

We notice that the elements in the array nums are non-decreasing, that is, the elements in the array nums are monotonically increasing. Therefore, we can use the method of binary search to find the index left of the first element in the array nums that is greater than or equal to target, and the index right of the first element in the array nums that is greater than target. If right - left > \frac{n}{2}, it means that the number of occurrences of the element target in the array nums exceeds half of the length of the array, so return true, otherwise return false.

The time complexity is O(log n), and the space complexity is O(1). Here, n is the length of the array nums.

Code

Python

Java

C++

Go

TypeScript

Try this approach in the editor →

Approach 2: Binary Search (Optimized)

In Solution 1, we used binary search twice to find the index left of the first element in the array nums that is greater than or equal to target, and the index right of the first element in the array nums that is greater than target. However, we can use binary search once to find the index left of the first element in the array nums that is greater than or equal to target, and then judge whether nums[left + \frac{n}{2}] is equal to target. If they are equal, it means that the number of occurrences of the element target in the array nums exceeds half of the length of the array, so return true, otherwise return false.

The time complexity is O(log n), and the space complexity is O(1). Here, n is the length of the array nums.

Code

Python

Java

C++

Go

TypeScript

Try this approach in the editor →

Complexity Comparison

ApproachComplexity
Binary Search—
Binary Search (Optimized)—

Detailed Complexity Analysis

ApproachTimeSpaceWhen to Use
Binary Search (first occurrence + offset check)O(log n)O(1)Best choice when the array is sorted and you want the fastest majority check
Binary Search (leftmost and rightmost bounds)O(log n)O(1)Useful when you need the exact frequency of the target in a sorted array

Video Solution

LeetCode 1150: Check If a Number Is Majority Element in a Sorted Array - Interview Prep Ep 48 • Fisher Coder • 1,686 views views

Watch 5 more video solutions →

Frequently Asked Questions

Is Check If a Number Is Majority Element in a Sorted Array easy or hard?
The problem is classified as Easy because the key observation is straightforward once you recognize the sorted property. Most of the work involves applying binary search correctly and understanding why checking the n/2 offset confirms a majority element.
Check If a Number Is Majority Element in a Sorted Array Python/Java solution
Python and Java implementations both rely on binary search. First locate the leftmost occurrence of the target, then check whether nums[index + n/2] equals the target while staying within bounds. This produces an O(log n) time solution with constant extra space in both languages.
How to solve Check If a Number Is Majority Element in a Sorted Array in O(log n)?
Perform a binary search to find the leftmost occurrence of the target in the sorted array. After finding that index, compute start + n/2 and verify that the element at that position is still the target. If it is, the target appears more than n/2 times. The search step takes O(log n) time and the verification step is O(1).
What is the best approach for Check If a Number Is Majority Element in a Sorted Array?
The best approach uses binary search to find the first occurrence of the target and then checks the element at index start + n/2. If that position contains the same value, the target appears more than half the time. This works because the array is sorted, allowing positional verification instead of counting. The overall time complexity is O(log n) with O(1) extra space.
Is Check If a Number Is Majority Element in a Sorted Array asked at Google/Amazon/Meta?
Majority element and binary search pattern problems commonly appear in interviews at companies like Google, Amazon, and Meta. Variations may ask you to count occurrences in a sorted array or detect majority elements under different constraints. The key skill tested is applying binary search to frequency-related problems.
What data structure is used in Check If a Number Is Majority Element in a Sorted Array?
The problem primarily uses an array as the underlying data structure. The algorithm relies on the sorted property of the array and applies binary search to efficiently locate the target and reason about its frequency.
What is the time complexity of Check If a Number Is Majority Element in a Sorted Array?
The optimal solution runs in O(log n) time using binary search. You locate the first occurrence of the target and perform a constant-time offset check to confirm the majority condition. Space complexity remains O(1) because the algorithm uses only a few variables.

Ready to solve this problem?

Practice Check If a Number Is Majority Element in a Sorted Array with our built-in code editor and test cases.

Practice on FleetCode