2653. Sliding Subarray Beauty
Mon Apr 24 2023 19:19:39 GMT+0000 (Coordinated Universal Time)
Saved by
@Ayush_dabas07
class Solution {
public int[] getSubarrayBeauty(int[] nums, int k, int x) {
TreeMap<Integer,Integer> map = new TreeMap<>();
int n = nums.length;
//adding first k numbers
for(int i = 0 ;i < k ;i++)
map.put(nums[i] , map.getOrDefault(nums[i] , 0) + 1);
//finding ans for first k ints
int ans[]= new int[n - (k-1)];
ans[0] = solve(map , x);
for(int j= k , i = 0 ; j < n ; j++ , i++){
//removing last and adding next elem;
map.put(nums[i] , map.get(nums[i]) - 1);
map.put(nums[j] ,map.getOrDefault(nums[j],0) + 1);
if(map.get(nums[i]) == 0)
map.remove(nums[i]);
ans[j - k + 1] = solve(map , x);
}
return ans;
}
public int solve(TreeMap<Integer,Integer> map ,int x){
//finding xth smallest element through treemap
int count = 0;
for(int val : map.keySet()){
count += map.get(val);
if(count >= x){
return val < 0 ? val : 0;
}
}
return 0;
}
}
content_copyCOPY
https://leetcode.com/contest/weekly-contest-342/problems/sliding-subarray-beauty/
Comments