Leetcode 2420 Find all good indices Solution in Java | Hindi Coding Community

0

 



You are given a 0-indexed integer array nums of size n and a positive integer k.

We call an index i in the range k <= i < n - k good if the following conditions are satisfied:

  • The k elements that are just before the index i are in non-increasing order.
  • The k elements that are just after the index i are in non-decreasing order.

Return an array of all good indices sorted in increasing order.

 

Example 1:

Input: nums = [2,1,1,1,3,4,1], k = 2
Output: [2,3]
Explanation: There are two good indices in the array:
- Index 2. The subarray [2,1] is in non-increasing order, and the subarray [1,3] is in non-decreasing order.
- Index 3. The subarray [1,1] is in non-increasing order, and the subarray [3,4] is in non-decreasing order.
Note that the index 4 is not good because [4,1] is not non-decreasing.

Example 2:

Input: nums = [2,1,1,2], k = 2
Output: []
Explanation: There are no good indices in this array.

 

Constraints:

  • n == nums.length
  • 3 <= n <= 105
  • 1 <= nums[i] <= 106
  • 1 <= k <= n / 2
Java Code :



class Solution {
public List<Integer> goodIndices(int[] a, int k) {
int n= a.length;
int[] dp1= new int[n+1]; Arrays.fill(dp1,1);
int[] dp2= new int[n+1]; Arrays.fill(dp2,1);
List<Integer> ans= new ArrayList<>();
for(int i=1;i<n;i++)
if(a[i-1]>=a[i]) dp1[i]= dp1[i-1]+1;
for(int i=n-2;i>=0;i--)
if(a[i]<=a[i+1]) dp2[i]= dp2[i+1]+1;
for(int i=k;i<n-k;i++)
if(dp1[i-1]>=k && dp2[i+1]>=k) ans.add(i);
return ans;
}
}


Post a Comment

0Comments
Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !