Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save SuryaPratapK/b2a52485b63f98945412cd8e20b7e96c to your computer and use it in GitHub Desktop.
Save SuryaPratapK/b2a52485b63f98945412cd8e20b7e96c to your computer and use it in GitHub Desktop.
class Solution {
#define ll long long
public:
long long countSubarrays(vector<int>& nums, int minK, int maxK) {
ll valid_subarrays = 0;
int invalid_idx = -1;
int minK_idx = -1;
int maxK_idx = -1;
for(int i=0;i<nums.size();++i){
if(nums[i]<minK or nums[i]>maxK) invalid_idx = i;
if(nums[i]==minK) minK_idx = i;
if(nums[i]==maxK) maxK_idx = i;
int count = max((min(minK_idx,maxK_idx)-invalid_idx),0);
valid_subarrays += count;
}
return valid_subarrays;
}
};
/*
//JAVA
class Solution {
public long countSubarrays(int[] nums, int minK, int maxK) {
long validSubarrays = 0;
int invalidIdx = -1;
int minKIdx = -1;
int maxKIdx = -1;
for (int i = 0; i < nums.length; ++i) {
if (nums[i] < minK || nums[i] > maxK) {
invalidIdx = i;
}
if (nums[i] == minK) {
minKIdx = i;
}
if (nums[i] == maxK) {
maxKIdx = i;
}
int count = Math.max(Math.min(minKIdx, maxKIdx) - invalidIdx, 0);
validSubarrays += count;
}
return validSubarrays;
}
}
#Python
class Solution:
def countSubarrays(self, nums: List[int], minK: int, maxK: int) -> int:
valid_subarrays = 0
invalid_idx = -1
minK_idx = -1
maxK_idx = -1
for i in range(len(nums)):
if nums[i] < minK or nums[i] > maxK:
invalid_idx = i
if nums[i] == minK:
minK_idx = i
if nums[i] == maxK:
maxK_idx = i
count = max(min(minK_idx, maxK_idx) - invalid_idx, 0)
valid_subarrays += count
return valid_subarrays
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment