| 1 | Sort array | - | - | - | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 2 | Start i loop | 0 | - | - | - | Check duplicates (none) | [] | [-4, -1, -1, 0, 1, 2] |
| 3 | Set pointers | 0 | 1 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 4 | Calculate sum | 0 | 1 | 5 | -4 + (-1) + 2 = -3 | Sum < 0, left++ | [] | [-4, -1, -1, 0, 1, 2] |
| 5 | Update pointers | 0 | 2 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 6 | Calculate sum | 0 | 2 | 5 | -4 + (-1) + 2 = -3 | Sum < 0, left++ | [] | [-4, -1, -1, 0, 1, 2] |
| 7 | Update pointers | 0 | 3 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 8 | Calculate sum | 0 | 3 | 5 | -4 + 0 + 2 = -2 | Sum < 0, left++ | [] | [-4, -1, -1, 0, 1, 2] |
| 9 | Update pointers | 0 | 4 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 10 | Calculate sum | 0 | 4 | 5 | -4 + 1 + 2 = -1 | Sum < 0, left++ | [] | [-4, -1, -1, 0, 1, 2] |
| 11 | Update pointers | 0 | 5 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 12 | While ends | 0 | 5 | 5 | - | left not < right, end while | [] | [-4, -1, -1, 0, 1, 2] |
| 13 | Next i | 1 | - | - | - | Check duplicates (i=1, nums[1]=-1, nums[0]=-4 different) | [] | [-4, -1, -1, 0, 1, 2] |
| 14 | Set pointers | 1 | 2 | 5 | - | - | [] | [-4, -1, -1, 0, 1, 2] |
| 15 | Calculate sum | 1 | 2 | 5 | -1 + (-1) + 2 = 0 | Sum == 0, add triplet | [[-1, -1, 2]] | [-4, -1, -1, 0, 1, 2] |
| 16 | Skip duplicates left | 1 | 2 | 5 | - | nums[2] == nums[3]? No | - | [-4, -1, -1, 0, 1, 2] |
| 17 | Skip duplicates right | 1 | 2 | 5 | - | nums[5] == nums[4]? No | - | [-4, -1, -1, 0, 1, 2] |
| 18 | Move pointers | 1 | 3 | 4 | - | - | [[-1, -1, 2]] | [-4, -1, -1, 0, 1, 2] |
| 19 | Calculate sum | 1 | 3 | 4 | -1 + 0 + 1 = 0 | Sum == 0, add triplet | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 20 | Skip duplicates left | 1 | 3 | 4 | - | nums[3] == nums[4]? No | - | [-4, -1, -1, 0, 1, 2] |
| 21 | Skip duplicates right | 1 | 3 | 4 | - | nums[4] == nums[3]? No | - | [-4, -1, -1, 0, 1, 2] |
| 22 | Move pointers | 1 | 4 | 3 | - | - | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 23 | While ends | 1 | 4 | 3 | - | left not < right, end while | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 24 | Next i | 2 | - | - | - | Check duplicates (nums[2] == nums[1], skip i=2) | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 25 | Next i | 3 | - | - | - | Check duplicates (nums[3]=0, nums[2]=-1 different) | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 26 | Set pointers | 3 | 4 | 5 | - | - | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 27 | Calculate sum | 3 | 4 | 5 | 0 + 1 + 2 = 3 | Sum > 0, right-- | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 28 | Update pointers | 3 | 4 | 4 | - | - | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 29 | While ends | 3 | 4 | 4 | - | left not < right, end while | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 30 | Next i | 4 | - | - | - | i=4 stops loop (length-2=4) | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |
| 31 | Return result | - | - | - | - | Return all unique triplets | [[-1, -1, 2], [-1, 0, 1]] | [-4, -1, -1, 0, 1, 2] |