0
点赞
收藏
分享

微信扫一扫

【刷】leetcode 3sum问题

香小蕉 2022-01-27 阅读 34

3sum

解题思路:

我们直接说第二种解法:

func threeSum(nums []int) [][]int {
    sort.Ints(nums)
    len := len(nums)
    result := make([][]int,0)
    if  len < 3 || nums == nil {
        return result
    }
    for i := 0;i < len;i++ {
        if nums[i] > 0 {
            break
        }
        if i > 0 && nums[i] == nums[i - 1] {
            continue
        }
         left := i + 1
         right := len - 1
        for left < right {
            sum := nums[i] + nums[left] + nums[right]
            if sum == 0 {
                result = append(result,[]int{nums[i],nums[left],nums[right]})
                for left < right && nums[left] == nums[left + 1] {
                   left++ 
                }
                for left < right && nums[right] == nums[right - 1] {
                    right--
                }
                left++  
                right--
            } else if (sum < 0) {
                left++
            } else if (sum > 0) {
                right--
            }
        }
    }
    return result
}
举报

相关推荐

0 条评论