3737. Count Subarrays With Majority Element I
Description
You are given an integer array nums and an integer target.
Return the number of subarrays of nums in which target is the majority element.
The majority element of a subarray is the element that appears strictly more than half of the times in that subarray.
Β
Example 1:
Input: nums = [1,2,2,3], target = 2
Output: 5
Explanation:
Valid subarrays with target = 2 as the majority element:
nums[1..1] = [2]nums[2..2] = [2]nums[1..2] = [2,2]nums[0..2] = [1,2,2]nums[1..3] = [2,2,3]
So there are 5 such subarrays.
Example 2:
Input: nums = [1,1,1,1], target = 1
Output: 10
Explanation:
βββββββAll 10 subarrays have 1 as the majority element.
Example 3:
Input: nums = [1,2,3], target = 4
Output: 0
Explanation:
target = 4 does not appear in nums at all. Therefore, there cannot be any subarray where 4 is the majority element. Hence the answer is 0.
Β
Constraints:
1 <= nums.length <= 10001 <= nums[i] <= 10βββββββ91 <= target <= 109
Solutions
Solution 1: Enumeration
We can enumerate all subarrays and maintain a counter \(\textit{cnt}\) to record the number of times \(\textit{target}\) appears in the subarray, then determine whether \(\textit{target}\) is the majority element of that subarray.
Specifically, we enumerate the starting position \(i\) of the subarray in the range \([0, n-1]\), then enumerate the ending position \(j\) in the range \([i, n-1]\). For each subarray \(nums[i..j]\), we update the counter \(\textit{cnt}\). If \(\textit{cnt} \times 2 > j - i + 1\), it means \(\textit{target}\) is the majority element of this subarray, and we increment the answer by \(1\).
The time complexity is \(O(n^2)\), and the space complexity is \(O(1)\), where \(n\) is the length of the array.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |