Grokking Oracle Coding Interview

0% completed

Hidden Document
Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content Hidden Document Content

.....

.....

.....

Like the course? Get enrolled and start learning!
D Delg

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.

N

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

Show 4 replies
S

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--;
Show 1 reply
S

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.

Show 1 reply
R

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.

Show 2 replies
H

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
Show 1 reply
W

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?

Show 1 reply
U

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.

M

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?

Show 2 replies
P

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]]?

Show 1 reply