zoukankan      html  css  js  c++  java
  • leetcode 18. 4Sum

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

    Note: The solution set must not contain duplicate quadruplets.

    For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.
    
    A solution set is:
    [
      [-1,  0, 0, 1],
      [-2, -1, 1, 2],
      [-2,  0, 0, 2]
    ]
    
    var fourSum = function (nums, target) {
          nums.sort((a, b) => a - b)
          var len = nums.length
          return kSum(nums, len, 0, 4, target)
    
        };
        function kSum(nums, len, start, k, target) {
          if (k === 2) {
            return twoSum(nums, len, start, target)
          } else {
            var result = []
            for (var i = start; i < len; i++) {
              //不能是第一个
              if (i != start && nums[i] == nums[i - 1]) {
                continue
              }
              var ret = kSum(nums, len, i + 1, k - 1, target - nums[i])
              if (ret.length) {
                ret.forEach(function (el) {
                  result.push([nums[i]].concat(el))
                })
              }
            }
            return result
          }
        }
        function twoSum(nums, len, start, target) {
          var left = start;
          var right = len - 1, ret = []
          while (left < right) {
            var sum = nums[left] + nums[right]
            if (sum === target) {
              ret.push([nums[left], nums[right]])
              while (nums[left] == nums[left + 1]) {
                left++
              }
              while (nums[right] == nums[right - 1]) {
                right--
              }
              left++
              right--
            } else if (sum > target) {
              right--
            } else {
              left++
            }
          }
          return ret
        }
    
  • 相关阅读:
    1.2 进位运算 & 数据类型 & 变量
    phpcms 下载数统计
    mysql 手动安装
    php 位运算权限问题
    php foreach详解
    文字溢出问题
    webstrom 基本设置
    DEDE利用Ajax实现调用当前登录会员的信息简要说明
    windows服务器
    DedeCms密码解密
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/12041644.html
Copyright © 2011-2022 走看看