Grokking the Coding Interview: Patterns for Coding Questions
Ask Author
Back to course home

0% completed

Vote For New Content
Mohammed Dh Abbas
My better solution / O(N^3)

Mohammed Dh Abbas

Jun 26, 2024

I don't agree with official solution its way to complicated and not practice for interview session

class Solution: ''' first sort the array Then for each array element at i, j add elements at i and j now we need to find the remaining elements define start pointer that goes --> and pointer end that goes <-- to find the remaining elements since the array is sorted we know when move a start or end pointer add the elements at position start and end and see if this + the i, j additions = target -3, -1, 1, 1, 1, 1, 1, 2, 4 i j s --> <-- e ''' def searchQuadruplets(self, arr, target): quadruplets = [] seen = set() arr.sort() for i in range(len(arr) - 3): for j in range(i + 1, len(arr) - 2): add = arr[i] + arr[j] start = j + 1 end = len(arr) - 1 while start < end: remain_add = arr[start] + arr[end] quad = (arr[i], arr[j], arr[start], arr[end]) if remain_add == (target - add) and quad not in seen: quadruplets.append([arr[i], arr[j], arr[start], arr[end]]) seen.add(quad) start += 1 end -= 1 elif remain_add > (target - add): end -= 1 else: start += 1 return quadruplets

1

0

Comments
Comments

On this page

Problem Statement

Try it yourself