0% completed
.....
.....
.....
D Delg
· 3 years ago
I've read and watched a few videos on this problem and I really think it would be helpful if there was a good visual representation of what is going on. Especially when the "correct" solution here is very complicated and verbose.
Natasha Johnson
· 4 years ago
The code itself is pretty complicated, but this video gives a better visualization of how it works. Check it out: https://m.youtube.com/watch?v=PXpthXV1mmw
Satappa khot
· 3 years ago
/** Sort the array , iterate over the array by having left and right pointers and find the sum. */ public Set<List<Integer>> searchTriplets2(int[] array) { Arrays.sort(array); Set<List<Integer>> triplets = new HashSet<>(); // Iterate only length -2 since you cant make triplets with only 2 elements for (int i = 0; i < array.length - 2; i++) { // Left is 1 ahead of i when it starts int right = array.length - 1; // Right always starts from the end int left = i+1; while (left < right) { int currentSum = array[i] + array[left] + array[right]; if (currentSum == 0) { triplets.add(Arrays.asList(array[i], array[left], array[right])); left++; right--;
stephen
· 4 years ago
If you find a triplet on the first call to seach_pair you will get a list index error because right already equals the end of the list so right +1 is out of bounds.
Rex Zulfekar
· 3 years ago
The solution for this doesn't work, getting runtime errors for the Javascript version. Even if I copy the exact solution and paste it.
himanshu1495
· 3 years ago
class Solution: def searchTriplets(self, arr): triplets = [] # TODO: Write your code here arr.sort() n=len(arr) for i in range(0,n-2):#go upto the third last element only el=arr[i] if i>0 and arr[i]==arr[i-1]: continue j=i+1 k=n-1 while(j<k): #TODO: logic for skipping second element already chosen el2=arr[j] el3=arr[k] if arr[j]+arr[k]==(0-el): triplets.append([el,el2,el3]) j+=1 k-=1 while(j<k and arr[j]==el2): j+=1 while(j<k and arr[k]==el3): k-=1 elif arr[j]+arr[k]<(0-el): j+=1 while(j<k and arr[j]==el2): j+=1 else: k-=1 while(j<k and arr[k
willumeh
· 2 years ago
So, I understand that we are taking a three sum and manipulating it to look similar to a two sum, there the sum will equal -targetsum , where targetsum is the item at index i. My question is why does the value to the left of index i not matter?
umesh
· a year ago
To form a triplet, you can chose first number in n ways. For each first number, second number can be chosen from the remaining n-1 numbers. But you don't get any choice for the third number, it must be -1*(first_num + second_num). Thus total of n*(n-1) or O(n^2) possibilities.
Mikhail Putilov
· 4 years ago
I cannot find an explanation why do we run searchPair method starting from i+1. Why do we just throw out left part of the array from 0 to i during searchPair?
Paul Montleau
· 4 years ago
Why is Example 1's output [-3, 1, 2], [-2, 0, 2], [-2, 1, 1], [-1, 0, 1] instead of [[-3, 1, 2], [-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]?