3471. Find the Largest Almost Missing Integer
Description
You are given an integer array nums
and an integer k
.
An integer x
is almost missing from nums
if x
appears in exactly one subarray of size k
within nums
.
Return the largest almost missing integer from nums
. If no such integer exists, return -1
.
A subarray is a contiguous sequence of elements within an array.
Example 1:
Input: nums = [3,9,2,1,7], k = 3
Output: 7
Explanation:
- 1 appears in 2 subarrays of size 3:
[9, 2, 1]
and[2, 1, 7]
. - 2 appears in 3 subarrays of size 3:
[3, 9, 2]
,[9, 2, 1]
,[2, 1, 7]
. - 3 appears in 1 subarray of size 3:
[3, 9, 2]
. - 7 appears in 1 subarray of size 3:
[2, 1, 7]
. - 9 appears in 2 subarrays of size 3:
[3, 9, 2]
, and[9, 2, 1]
.
We return 7 since it is the largest integer that appears in exactly one subarray of size k
.
Example 2:
Input: nums = [3,9,7,2,1,7], k = 4
Output: 3
Explanation:
- 1 appears in 2 subarrays of size 4:
[9, 7, 2, 1]
,[7, 2, 1, 7]
. - 2 appears in 3 subarrays of size 4:
[3, 9, 7, 2]
,[9, 7, 2, 1]
,[7, 2, 1, 7]
. - 3 appears in 1 subarray of size 4:
[3, 9, 7, 2]
. - 7 appears in 3 subarrays of size 4:
[3, 9, 7, 2]
,[9, 7, 2, 1]
,[7, 2, 1, 7]
. - 9 appears in 2 subarrays of size 4:
[3, 9, 7, 2]
,[9, 7, 2, 1]
.
We return 3 since it is the largest and only integer that appears in exactly one subarray of size k
.
Example 3:
Input: nums = [0,0], k = 1
Output: -1
Explanation:
There is no integer that appears in only one subarray of size 1.
Constraints:
1 <= nums.length <= 50
0 <= nums[i] <= 50
1 <= k <= nums.length
Solutions
Solution 1: Case Analysis
If \(k = 1\), then each element in the array forms a subarray of size \(1\). In this case, we only need to find the maximum value among the elements that appear exactly once in the array.
If \(k = n\), then the entire array forms a subarray of size \(n\). In this case, we only need to return the maximum value in the array.
If \(1 < k < n\), only \(\textit{nums}[0]\) and \(\textit{nums}[n-1]\) can be the almost missing integers. If they appear elsewhere in the array, they are not almost missing integers. Therefore, we only need to check if \(\textit{nums}[0]\) and \(\textit{nums}[n-1]\) appear elsewhere in the array and return the maximum value among them.
If no almost missing integer exists, return \(-1\).
The time complexity is \(O(n)\), and the space complexity is \(O(n)\). Here, \(n\) is the length of the array \(\textit{nums}\).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|