Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >添加到零的组合

添加到零的组合
EN

Stack Overflow用户
提问于 2012-07-19 14:20:40
回答 2查看 136关注 0票数 2

给定五个排序列表: List1、List2、List3、List4、List5,每个列表的长度为n。如果有5 (int)个数字(每个列表中有1个),求和为零返回true。我的目标是确保算法是O(n)。不经意间,我可以考虑创建一个包含5个链表之和的散列映射,或者计算这5个链表的值,使得o(n*n)。我在寻找优化或降低复杂性的方法,但我被卡住了。

我的Python代码:

代码语言:javascript
运行
AI代码解释
复制
def getIndicesFromFiveArrays(List1,List2,List3,List4,List5,t):
    a,b,c,d,e=0,0,0,0,0
    while(List1[a]+List2[b]+List3[c]+List4[d]+List5[e]!=t):
        b=b+1
        if b==len(List2):
            return (-1,-1)
        if List1[a]+List2[b]+List3[c]+List4[d]+List5[e]<t:
            a=a+1
            b=b-1
        c=c-1
        d=d-1
        e=e-1
            if a==len(List1):
                return (-1,-1)
    return (a,b,c,d,e)

编辑1:顺便说一下,这不是家庭作业,你可以检查我的其他问题,自己验证。谢谢..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-19 14:57:15

如果有2个列表,你可以从列表1中提取一个数字,然后在列表2中查找该数字的负数。如果你用一个集合替换列表2,那么总体复杂度将为O(n)。

如果有3个列表,您将从列表1中获取一个数字,然后从列表2中获取一个数字,复杂度为O(n^2)。如果将列表3替换为一个集合,则总体复杂度将为O(n^2)。

因此,我认为5个列表/集合的总体复杂度不能低于O(n^4)。

票数 0
EN

Stack Overflow用户

发布于 2012-07-19 21:21:17

有一个O(n^3)的解决方案,灵感来自MRAB的评论。

首先,将列表1中的每个值与列表2中的每个值组合起来,并将其存储在一个集合中。调用结果集1和2,它有n^2个值。

接下来,将集合1和2与列表3组合。调用结果集1和2和3,它有n^3个值,并且需要n^3个步骤来构造。

接下来,组合列表4和5。调用结果集4和5,它有n^2个值。

最后,检查集合4和5中的值是否等于集合1和2和3中的值的倒数。此步骤需要n^2个步骤。

该方法使用O(n^3)空间和O(n^3)时间。

正如Karoly Horvath所指出的,您实际上不需要存储集合1和2和3,您可以在最后一步中从集合1和2即时构建它。此方法仅使用O(n^2)空间,但仍需要O(n^3)时间。代码如下:

代码语言:javascript
运行
AI代码解释
复制
l1 = [1,2,3,4,5,10]
l2 = [1,2,3,4,5,11]
l3 = [1,2,3,4,5,12]
l4 = [1,2,3,4,5,13]
l5 = [1,2,3,4,5,-46]

def test():
    l1_2 = [a + b for a in l1 for b in l2]
    set4_5 = set([a + b for a in l4 for b in l5])
    return any([True for x in l1_2 for y in l3 if -(x + y) in set4_5])

print test()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11562888

复制
相关文章
PHP解析json、xml错误
解析json php内置函数json_decode() 可以解析json字符串 但是有的时候看起来正确的json,解析却一直返回null。 你知道吗,json是可能解析失败的,此时PHP不会产生提示。 我们需要手动通过json_last_error()函数获取 function json_decode_siam($string, $mark = false){ $data = json_decode($string, $mark); switch (json_last_error()) {
宣言言言
2019/12/15
2.5K0
Android 创建与解析XML(六)—— 比较与使用
其中,从处理方式看,有的采用了Java处理XML的标准方式,有的是经过第三方改进后的XML处理方式;从事件角度看,有的是基于Dom树节点,有的基于事件处理
阳光岛主
2019/02/19
9530
xml的解析
   XmlDocument doc=new XmlDocument();    StringReader sr=new StringReader(textBox1.Text);    XmlTextReader rd=new XmlTextReader(sr);    while(rd.Read())    {     //textBox2.Text +=rd.NodeType.ToString()+"\r\n";     if(rd.NodeType.ToString()=="Element")    
用户1075292
2018/01/23
3.6K0
XML的解析
昨天说了JSON解析,今天来看一下XML解析。在开发中需要对xml解析也是很常见的,跟JSON一样,大同小异。
一头小山猪
2020/04/10
3.1K0
Confluence 6 找到在创建 XML 备份的时候出现的错误
错误可能是因为数据库突然不可访问而产生。如果你在你的日志中看到了错误  'Couldn't backup database data' ,这个指南将会帮助你更正这个错误。我们强烈推荐你备份 Confluence 数据库和 Confluence 的 home 目录这种备份方式来备份你的 Confluence 服务器。你可以使用 Restoring Data from other Backups 的方法来恢复你的备份,如果需要的话。如果你对数据库 SQL 并不熟悉的话,我们建议你联系你的数据库管理员来获得相关的帮助。
HoneyMoose
2019/01/31
1.1K0
Android 创建与解析XML(一)—— 概述
Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。
阳光岛主
2019/02/19
1.3K0
使用Python进行XML解析
XML 指可扩展标记语言(eXtensible Markup Language),常被设计用来传输和存储数据。 在进行医学图像标注时,我们常使用XML格式文件来存储标注,以下展示了使用Python来提取标注的坐标值。
范中豪
2020/07/14
1.3K0
使用 Javascript 解析 XML:jParse
jParse 是一个 jQuery 插件,它能够用来解析上通过 jQuery .ajax 方法加载的的 XML 文件。jParse 非常容易使用,大小只有 2KB,非常轻量级,并且在所有的主流浏览器上都兼容。(Firefox 1.5+,Safari 3+,Chrome 3,Internet Explorer 6+,Opera 9+)。
Denis
2023/04/16
6250
Android 创建与解析XML(三)—— Sax方式
SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,不需要解析完整个文档,而是按照内容顺序看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件就是些回调方法(callback),这些方法 定义在ContentHandler中,下面是其主要方法: startDocument():当遇到文档的时候就触发这个事件 调用这个方法 可以在其中做些预处理工作,如:申请对象资源
阳光岛主
2019/02/19
9360
【C#】创建、解析 xml 文件(XmlDocument 方式)
本文使用 System.Xml 中的 XmlDocument 解析 xml 格式的文件。另外,由于我是粗略的看了下官方文档和一些博客,可能会有许多错误的地方,望指出。
全栈程序员站长
2022/09/06
1.7K0
Android 创建与解析XML(二)—— Dom方式
Dom方式创建XML,应用了标准xml构造器 javax.xml.parsers.DocumentBuilder 来创建 XML 文档,需要导入以下内容
阳光岛主
2019/02/19
6530
Android 创建与解析XML(四)—— Pull方式
Android系统中和创建XML相关的包为org.xmlpull.v1,在这个包中不仅提供了用于创建XML的 XmlSerializer,还提供了用来解析XML的Pull方式解析器 XmlPullParser
阳光岛主
2019/02/19
1.4K0
golang的xml、json解析
xml golang的xml处理主要应用Unmarshal、Marshal方法实现,解析一个xml到struct如下,首先是xml文件: <?xml version="1.0" encoding="u
用户1141560
2017/12/26
3K0
golang的xml、json解析
Java解析XML的实践
通过这段代码,重点是需要理解他的解析过程,就可以根据实际用到的XML格式,写出对应的解析逻辑。
bisal
2023/02/16
1K0
XML解析器(TinyXML)的使用指南
XML解析器(TinyXML)的使用指南 关于XML文件的解析方法的引导, 大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际
用户3519280
2023/07/06
1.1K0
java解析XML的方法
1.DOM 实现方法 xml文件 <?xml version="1.0" encoding="utf-8"?> <Accounts> <Account type="type1">
HUC思梦
2020/09/03
1.1K0
xml解析---Java解析xml文件
dom4j解析xml文件、之前用下面的方法,90M的xml,500万行,解析完插入数据库,单线程,不到1小时搞定,而只是解析数据,只用了7秒。
IT云清
2019/01/22
7.1K0
Java解析XML(一) 使用DOM读取XML文件
DOM 是最容易使用的java XML解析器。它可以解析一个完整的XML文档并将其加载到内存中,然后用对象对其进行建模,以实现简单的node遍历。DMO是将XML直接加载到内存中进行处理的,所以不建议解析较大的XML文件。
青山师
2023/05/05
1.4K0
java xml解析框架_JAVA解析xml的五种方式对比
本篇文章主要对比Java即系xml的五种方式,这五种方式各有利弊,大家可以看情况采用哪一种。
全栈程序员站长
2022/09/05
1.7K0
点击加载更多

相似问题

Vuex状态变化传播

11

Vuex,动作中的状态变化

14

Vuex状态与Firebase同步

12

VueJS Vuex -承诺解决状态变化?

20

如何正确观察Vuex中的状态变化?

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文