We’re given an input array of numbers, our function should return all the triplets [nums[i], nums[j], nums[k]] where [nums[i], nums[j], nums[k]] == 0.
The indices i, j, and k are all distinct.
Example
Approach 1
Visualize the problem
Solve without code
Sort the values
Starting from the left to right we can find combinations by using the starting number and combining the left and right of the input array
If the sum is too large we can reduce the right pointer, conversely we increase the left pointer
Once we’re done with the possible combinations for this current pointer a we can move on to the next
Solve with code
Sort the array
Create two loops
Define a current index a and left and right pointers band c. a will act as our outer loop and b and c will essentially be two sum within our outer loop.
Increase or decrease b and c based on the sum
Once we’re done with the current index a we can increase the index by one and reset b and cand repeat the process.
Implementation
Complexity Analysis
Time Complexity: O(nlogn)+O(n2)=O(n2) - Sorting and Two loops.