From c52a533882884f39f44b24d02bbba6a825e53c63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sezai=20Burak=20Kantarc=C4=B1?= <45287996+kantarcise@users.noreply.github.com> Date: Wed, 17 Apr 2024 11:58:08 +0300 Subject: [PATCH] Brute Force - Fenwick --- Leet_Code/easy/1534_Count_Good_Triplets.py | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Leet_Code/easy/1534_Count_Good_Triplets.py diff --git a/Leet_Code/easy/1534_Count_Good_Triplets.py b/Leet_Code/easy/1534_Count_Good_Triplets.py new file mode 100644 index 0000000..1c66f9f --- /dev/null +++ b/Leet_Code/easy/1534_Count_Good_Triplets.py @@ -0,0 +1,74 @@ +""" +Given an array of integers arr, and three integers +a, b and c. + +You need to find the number of good triplets. + +A triplet (arr[i], arr[j], arr[k]) is good if + the following conditions are true: + + 0 <= i < j < k < arr.length + |arr[i] - arr[j]| <= a + |arr[j] - arr[k]| <= b + |arr[i] - arr[k]| <= c + +Where |x| denotes the absolute value of x. + +Return the number of good triplets. + +Example 1: + + Input: arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3 + + Output: 4 + + Explanation: + + There are 4 good triplets: + [(3,0,1), (3,0,1), (3,1,1), (0,1,1)]. + +Example 2: + + Input: arr = [1,1,2,2,3], a = 0, b = 0, c = 1 + + Output: 0 + + Explanation: + + No triplet satisfies all conditions. + +Constraints: + + 3 <= arr.length <= 100 + + 0 <= arr[i] <= 1000 + + 0 <= a, b, c <= 1000 + +Takeaway: + + Brute force works, + + there is also a Fenwick Tree Solution + + Search for: + + -Roughly O(n log n) with Fenwick Tree- +""" + +class Solution: + def countGoodTriplets(self, arr: list[int], a: int, b: int, c: int) -> int: + # just brute force! + + result = 0 + for i in range(len(arr)): + for j in range(i+1, len(arr)): + for k in range(j+1, len(arr)): + print(i, j, k) + if ((abs(arr[i] - arr[j]) <= a) and + (abs(arr[j] - arr[k]) <= b) and + (abs(arr[i] - arr[k]) <= c)): + result += 1 + +sol = Solution() +print(sol.countGoodTriplets(arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3))