aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--count_subarr_len_three_cond.c22
-rw-r--r--count_subarr_len_three_cond.py22
2 files changed, 44 insertions, 0 deletions
diff --git a/count_subarr_len_three_cond.c b/count_subarr_len_three_cond.c
new file mode 100644
index 0000000..3d61dd8
--- /dev/null
+++ b/count_subarr_len_three_cond.c
@@ -0,0 +1,22 @@
+// 3392. Count Subarrays of Length Three With a Condition
+#include "leetcode.h"
+
+/*
+ * given an integer array 'nums', return the number of subarrays of length 3
+ * such that the sum of the first and third number equals exactly half of the
+ * second number.
+ */
+
+int countSubarrays(int *nums, int numsSize) {
+ int cnt = 0;
+ for (int i = 1; i < numsSize - 1; ++i)
+ if (2 * (nums[i - 1] + nums[i + 1]) == nums[i])
+ cnt++;
+ return cnt;
+}
+
+int main() {
+ int n1[] = {1, 2, 1, 4, 1}, n2[] = {1, 1, 1};
+ printf("%d\n", countSubarrays(n1, ARRAY_SIZE(n1))); // expect: 1
+ printf("%d\n", countSubarrays(n2, ARRAY_SIZE(n2))); // expect: 0
+}
diff --git a/count_subarr_len_three_cond.py b/count_subarr_len_three_cond.py
new file mode 100644
index 0000000..cb542bd
--- /dev/null
+++ b/count_subarr_len_three_cond.py
@@ -0,0 +1,22 @@
+# 3392. Count Subarrays of Length Three With a Condition
+
+"""
+given an integer array 'nums', return the number of subarrays of length 3
+such that the sum of the first and third number equals exactly half of the
+second number.
+"""
+
+
+class Solution(object):
+ def countSubarrays(self, nums):
+ """
+ :type nums: List[int]
+ :rtype: int
+ """
+ return sum(l + r << 1 == m for l, m, r in zip(nums, nums[1:], nums[2:]))
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.countSubarrays(nums=[1, 2, 1, 4, 1]))
+ print(obj.countSubarrays(nums=[1, 1, 1]))