2sum,3sum,4sum,ksum
1. 2sum
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路1:不对原始数组进行排序,用一遍循环通过Hash来找出满足条件的解
代码1如下:
def twoSum(nums, target):
dicts = {}
for i in range(len(nums)):
if target-nums[i] in dicts:
return [dicts[target-nums[i]], i]
dicts[nums[i]] = i
思路2:对原数组进行排序,用首尾指针依次向中间靠拢,来找出满足条件的解。对nums=[2, 7, 11, 5]排完序后得到[2, 5, 7, 11] (相应排序前序号为[0,3,1,2]),让左右指针从两头开始寻找,初始情况下left=0,right=3(注:这里的3是最大索引)。计算它们对应的元素之和,即2+11=13要大于target,说明元素的和需要减小,故left不变,right要变成right-1,这样就变成计算 2+7,而 2+7 刚好等于 target,所以结束循环。循环是结束了,但是并不能返回 [left,right],因为排过序,所以应该返回排序前的索引序号,即返回 [lists[left][1], lists[right][1]]
代码2如下:
def twoSum23(nums, target):
lists = []
for i in range(len(nums)):
lists.append([nums[i], i])
lists = sorted(lists, key = lambda s:s[0])
l = 0; r = len(nums)-1
while(l<r):
if lists[l][0]+lists[r][0]==target:
return [lists[l][1], lists[r][1]]
elif lists[l][0]+lists[r][0]<target:
l+=1
else:
r-=1
2. 3sum
问题:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
思路1:遍历每个数,调用2sum算法,得到和为-num[i]的两个数
代码如下:
def Two_Sum(nums,target):
temp = []
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
if nums[i] + nums[j] == target:
temp.append([nums[i],nums[j]])
return temp
# nums =[-2,0,1,1,2]
# ret = Two_Sum(nums,target=2)
# print('ret',ret) def threeSum(nums):
Res = {}
R = []
# nums.sort()
for i in range(0,len(nums)-2):
temp = nums[i+1:]
res = Two_Sum(temp,target = -nums[i])
if res != []:
Res[nums[i]] = [j for j in res]
# print(Res)
for key,value in Res.items():
# print(value)
for i in range(len(value)):
R.append([key,value[i][0],value[i][1]]) return max([len(i) for i in R]) R = threeSum([-2,0,1,1,2])
print('R',R)

3. 4sum
4. ksum
2sum,3sum,4sum,ksum的更多相关文章
- 2sum、3sum、4sum以及任意连续的数的和为sum、任意连续或者不连续的数的和为sum
2sum 如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,如果某一刻a[i]+a ...
- leetcode: 哈希——two-sum,3sum,4sum
1). two-sum Given an array of integers, find two numbers such that they add up to a specific target ...
- 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)
洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...
- 【LeetCode】四数之和【排序,固定k1,k2,二分寻找k3和k4】
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦
Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦 近期活动: 2014年9月3日,第8次西安面试&算法讲座视频 + PPT 的下载地址:http ...
- 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye
一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案
前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...
随机推荐
- ztree 文件夹类型的 树状图
未套程序的源代码: 链接:http://pan.baidu.com/s/1nuHbxhf 密码:4aw2 已套程序的源代码: css样式: /*发布邮件 选择领导弹窗*/ .xuandao{ disp ...
- Android超精准计步器开发-Dylan计步(申明:来源于网路)
Android超精准计步器开发-Dylan计步(申明:来源于网路) 拿来借鉴学习,向原创者... 地址:http://blog.csdn.net/linglongxin24/article/detai ...
- Nodejs----基本数据类型
Nodejs基本数据类型: nodejs的基础JavaScript(脚本语言). 而大多数的
- Nginx作为TCP负载均衡
参考文档:https://www.cnblogs.com/stimlee/p/6243055.html Nginx在1.9版本以后支持TCP负载均衡,模块默认是没有编译的,需要编译时添加—with-s ...
- 用户定义的java计数器
mapreduce 计数器用来做某个信息的统计. 计数器是全局的.mapreduce 框架将跨所有map和reduce聚集这些计数器,并且作业结束时产生一个最终的结果. 语法像 java 的 enum ...
- Codeforces 180C - Letter - [简单DP]
题目链接:http://codeforces.com/problemset/problem/180/C 题意: 有一段字符串,包含大小写字母,每次可以将其中一个字母由大写变成小写,或者小写变成大写.要 ...
- Elasticsearch 2.3.3 JAVA api说明文档
原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...
- 配置llama实现impala on yarn-验证未通过,仅以此文作为参考
以下内容采自网络,目前验证未通过,仅以此作为参考: 简介:早期的Impala版本中,为了使用Impala,我们通常会在以Client/Server的结构在各个集群节点启动impala-server.i ...
- hadoop内存配置方案
Configuration File Configuration Setting Value Calculation 8G VM (4G For MR) yarn-site.xml ...
- AFNetworking的缓存使用
+ (NSURLCache *)defaultURLCache { // It's been discovered that a crash will occur on certain version ...