Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create 1343-number-of-sub-arraysofSize-k-and-average-greaterthanor-equal-to-threshold.cs #3690

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*

Approach:
1. We will initialize i, j, c, res, and sum to 0.
2. We will calculate the sum of the first k elements and check if the average is greater than or equal to the threshold.
3. We will increment the result if the average is greater than or equal to the threshold.
4. We will iterate through the array and calculate the sum of the next k elements.
5. We will check if the average is greater than or equal to the threshold and increment the result accordingly.
6. We will return the result.

Time Complexity: O(n)
Space Complexity: O(1)

*/
public class Solution {
public int NumOfSubarrays(int[] arr, int k, int threshold) {
int i ,j, c, res, sum; // Initialize i, j, c, res, and sum to 0.
i = c = sum = res = 0; // Initialize i, c, sum, and res to 0.
j = i + k - 1; // Initialize j to i + k - 1.

while (c <= j) { // Calculate the sum of the first k elements.
sum = sum + arr[c]; // Add the element at index c to the sum.
c++; // Increment c.
}

res = (sum/k) >= threshold ? 1 : 0; // Check if the average is greater than or equal to the threshold and increment the result accordingly.

while ( j < arr.Length) { // Iterate through the array and calculate the sum of the next k elements.
sum = sum - arr[i++]; // Subtract the element at index i from the sum and increment i.
j++; // Increment j.
if(j < arr.Length) { // Check if j is less than the length of the array.
sum = sum + arr[j]; // Add the element at index j to the sum.
}
else {
break; // Break the loop if j is equal to or greater than the length of the array.
}
if((sum/k) >= threshold) { // Check if the average is greater than or equal to the threshold.
res++; // Increment the result.
}
}

return res; // Return the result.
}
}