博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Template to N Sum for (LC 15. 3Sum, LC 18. 4Sum)(N>2)
阅读量:4322 次
发布时间:2019-06-06

本文共 1028 字,大约阅读时间需要 3 分钟。

思路为将N sum 转换为N-1 Sum, 直到转换为 2 Sum. 不过最开始就已经将nums sort一下, 然后再处理.

def findNsum(nums, target, N, temp, ans):     if len(nums) < N or N < 2 or target < nums[0]*N or target > nums[-1]*N: return     if N == 2:        l, r = 0, len(nums) -1        while l < r:            s = nums[l] + nums[r]            if s == target:                ans.append(temp + [nums[l] , nums[r]])                while l < r and nums[l] == nums[l+1]:                    l += 1                while l < r and nums[r] == nums[r-1]:                    r -= 1                l += 1                r -= 1            elif s < target:                l += 1            else:                r -= 1      else:          for i in range(len(nums) - N + 1):              if i == 0 or nums[i] != nums[i-1]:  # delete the same ans                  findNsum(nums[i+1:], target - nums[i], N -1, temp + [nums[i]], ans)# if want to call it, for example, 4 Sum, ans = []findNsum(sorted(nums), target, 4, [] , ans)return ans

 

转载于:https://www.cnblogs.com/Johnsonxiong/p/9206889.html

你可能感兴趣的文章
seL4环境配置
查看>>
Git报错:insufficient permission for adding an object to repository database .git/objects
查看>>
ajax跨域,携带cookie
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
查看>>
洛谷 CF937A Olympiad
查看>>
Codeforces Round #445 C. Petya and Catacombs【思维/题意】
查看>>
用MATLAB同时作多幅图
查看>>
python中map的排序以及取出map中取最大最小值
查看>>
ROR 第一章 从零到部署--第一个程序
查看>>
<form>标签
查看>>
vue去掉地址栏# 方法
查看>>
Lambda03 方法引用、类型判断、变量引用
查看>>
was集群下基于接口分布式架构和开发经验谈
查看>>
MySQL学习——MySQL数据库概述与基础
查看>>
ES索引模板
查看>>
HDU2112 HDU Today 最短路+字符串哈希
查看>>
JPanel重绘
查看>>
图片放大器——wpf
查看>>
SCALA STEP BY STEP
查看>>
cocos2d-x学习笔记
查看>>