Leetcode - 3Sum
https://leetcode.com/problems/3sum/
Given an array nums
of n integers, are there elements a, b, c in nums
such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ]
Typical 3sum problem. For removing duplicate result, it can use a helper to find next uniq element to update i, j, k.
func threeSum(nums []int) [][]int { if len(nums) == 0 { return [][]int{} } sort.Ints(nums) result := [][]int{} i := 0 for i < len(nums) { j := i+1 k := len(nums)-1 for j < k { sum := nums[i] + nums[j] + nums[k] if sum == 0 { result = append(result, []int{nums[i], nums[j], nums[k]}) } if sum > 0 { prevK := nums[k] for k > j && nums[k] == prevK { k-- } } else { prevJ := nums[j] for j < k && nums[j] == prevJ { j++ } } } prevI := nums[i] for i < len(nums) && nums[i] == prevI { i++ } } return result }