python函数做n_简单Python函数的O(N)时间复杂性

我刚做了一个Codibility演示测试。question and my answer can be seen here,但我也会把我的答案贴在这里。我的回答是:def solution(A):

# write your code in Python 2.7

retresult = 1; # the smallest integer we can return, if it is not in the array

A.sort()

for i in A:

if i > 0:

if i==retresult: retresult += 1 # increment the result since the current result exists in the array

elif i>retresult: break # we can go out of the loop since we found a bigger number than our current positive integer result

return retresult

我的问题是关于时间复杂性的,我希望你的回答能更好地理解这一点。问题要求期望的最坏情况时间复杂度是O(N)。在

我的函数有O(N)时间复杂度吗?我对数组进行排序是否会增加复杂性,如果是,如何增加复杂性?在

Codibility报告(供我回答)

^{pr2}$

那么,我的函数的复杂性是什么呢?如果是O(N*log(N)),我该怎么做才能将问题的复杂度降低到O(N)?在

非常感谢!在

另外,我对时间复杂性的背景阅读来自this great post。在

编辑

基本解决方案具有昂贵的时间复杂度,因此不是此可信性测试的正确答案:def basicSolution(A):

# 0(N*log(N) time complexity

retresult = 1; # the smallest integer we can return, if it is not in the array

A.sort()

for i in A:

if i > 0:

if i==retresult: retresult += 1 #increment the result since the current result exists in the array

elif i>retresult: break # we can go out of the loop since we found a bigger number than our current positive integer result

else:

continue; # negative numbers and 0 don't need any work

return retresult

hashSolution是我对上述文章“使用哈希”段落中所描述的内容的看法。由于我是Python新手,请告诉我您是否对这段代码有任何改进(尽管它对我的测试用例有效),以及这段代码的时间复杂度如何?在def hashSolution(A):

# 0(N) time complexity, I think? but requires 0(N) extra space (requirement states to use 0(N) space

table = {}

for i in A:

if i > 0:

table[i] = True # collision/duplicate will just overwrite

for i in range(1,100000+1): # the problem says that the array has a maximum of 100,000 integers

if not(table.get(i)): return i

return 1 # default

最后,我很难理解实际的0(N)解(O(N)时间和O(1)额外空间解。我知道负数/0被推到数组的后面,然后我们得到一个只有正值的数组。但是我不理解findMissingPositive函数-有谁能用Python代码/注释来描述这个函数吗?举个例子吧?我一直在尝试用Python来完成它,但是无法理解它:(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 热潮之下,初创企业能否躲过科技巨头的碾压?

来源:AIis概要:人工智能(AI)是当下的流行语,AI 相关的初创企业纷纷涌现,大型科技巨头也频频采取相关动作,走在 AI 的前沿。全世界的科技巨头们要小心了。人工智能(AI)是当…

mysql先删后增并发时出现死锁_MySQL死锁案例分析一(先delete,再insert,导致死锁)...

一、死锁案例MySQL版本:Percona MySQL Server 5.7.19隔离级别:可重复读(RR)业务逻辑:并发下按某个索引字段先delete记录,再insert记录比如:begin;delete from tb where order_id xxx;insert into tb(order_id) values…

神经科学领域重大突破,港大科学家揭海马体新功能

来源:神经科技概要:香港大学研究团队在神经科学领域取得重大突破,揭示大脑中一个重要区域 — 海马体的新功能。香港大学研究团队在神经科学领域取得重大突破,揭示大脑中一个重要区域 — 海马体的新功能。团队发现,海马…

python移动平均线绘图_对python pandas 画移动平均线的方法详解

数据文件 66001_.txt 内容格式:date,jz0,jz1,jz2,jz3,jz4,jz52012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.00232012-12-31,0.9435,0.8945,1.0435,1.0031,1.1229,1.00272013-01-04,0.9403,0.8898,1.0385,1.0032,1.1183,1.0030... ...pd_roll_mean1.py# -*- cod…

年度最理性 AI 分析文章:预测 AI 未来,大部分人陷入了 7 大误区

来源:36氪概要:错误的预测会导致大家对不会发生的事情感到恐惧。为什么在人工智能和机器人的预测上总有人不断犯错呢?想着预测未来,却一不小心就陷入了yy。近年来图像识别突破、Waymo无人车上路、Alphago战胜人类冠军等AI的一些标…

python算24点穷举法_关于24点去重的算法?

4月12日更新 先给结论吧 花了近一周时间用JavaScript完成了24点去重算法,源码提交到了github上:auntyellow/24 ,可以在线试:gives you all dissimilar solutions.在1到13范围内的四数组合中,不重复解最多的组合是2、4…

为什么当今的企业都需要人工智能战略?

来源:腾股创投概要:人工智能(AI)从根本上改变了所有行业的企业的运营(包括制造业,医疗健康,信息技术和运输业)。今后5年,会有一些标普500强CEO 后悔没有早点考虑自己的 A…

java邮箱_java发送邮件(qq邮箱)

完整的示例代码:package cn.sw.study.common.test;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.ut…

昆虫大脑帮助AI解决导航难题

原作者:SAKYASINGHADASGUPTA, LEAPMIND INC译者:彭婷概要:无人机和其他自主机器人需要通过移动或其他有效的方案来解决现实生活中的问题,而这些问题有的小到平常的包裹运输,有的大到紧急搜索和救援任务。无人机和其他自…

DeepMind发布《星际争霸 II》深度学习环境

来源:AI 研习社概要:上个月,DeepMind和暴雪终于开源了《星际争霸II 》的机器学习平台。本文介绍了基于星际争霸II游戏的强化学习环境SC2LE(《星际争霸II 》学习环境)。StarCraft II: A New Challenge for Reinforcemen…

java arraylist .get_Java ArrayList get()方法

Java ArrayList get()方法java.util.ArrayList.get(int index) 方法返回在ArrayList中的指定位置的元素。1 语法public E get(int index)2 参数index:要返回的元素的索引。3 返回值返回ArrayList中指定位置的元素。4 示例package com.yiidian;/*** 一点教程网&#…

中国首篇Science机器人子刊!北航软体机器人实验室四年成果登上封面长篇

来源:北航新闻网、机器人大讲堂概要:通过这三项关键技术,我们成功实现了机器人样机能够像真正的䲟鱼一样牢牢吸附在物体表面,并且通过内部鳍片的主动抬起运动显著增大摩擦力。重磅惊喜,北京时间9月21日,国际…

java 控制台输入字符串_Java控制台输入字符串及字符串比较

需求描述:茵茵很喜欢研究车牌号码,从车牌号码上可以看出号码注册的早晚,据研究发现,车牌号码是按字典序发放的,现在她收集了很多车牌号码,请你设计程序帮她判断注册较早的号码。车牌号码由5个字母或数字组成…

DARPA:我们需要一种新型的芯片技术来确保人工智能的长足发展

原文作者:Dom Galeon译者:李凌概要:专家们普遍认为在21世纪20年代摩尔定律将黯然失色。同时,人工智能正在接受的测试要求他们有更强大的处理能力——接近于人脑的处理能力。简介上周三,美国国防部高级研究计划局&#…

java 反射.问题_Java知识点总结(反射-反射机制性能问题)

Java知识点总结(反射-反射机制性能问题)(Java知识点总结)[Java, 反射]性能相关注意点:setAccessible启用和禁用访问安全检查的开关,值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。__并不…

前沿|揭开黑箱:希伯来大学计算机科学教授提出「信息瓶颈」

来源:全球人工智能概要:像大脑一样,深度神经网络也有很多层神经元。当神经元被激活时,它会发出信号,连接上面一层的神经元。如今「深度神经网络」已经学会对话、驾驶汽车、打视频游戏、玩围棋、绘画并辅助科研&#xf…

华为与英特尔开展5G互操作性测试

来源:华为概要:C-Band被认为是首批全球协同频谱之一,将提供5G的基础覆盖和带宽,是5G最主要的频段,也是全球最可能首商用的频段之一。华为与英特尔宣布启动基于3GPP标准的5G新空口互操作性测试(IODT&#xf…

java手机网站开发工具_制作网站常用的网页开发工具有哪些

我们要想制作好网站其实是离不开网站代码的HTML,我们在制作网站的时候是需要用到一些常用的网页开发工具,才能完成我们网页的编写,那么,你知道制作网站常用的网页开发工具有哪些吗?不清楚的话,下面小编和你说一说吧!一…

Natural 自然语言处理(NLP)「全解析」

原文来源: 机器人圈概要:在自然语言处理方面的研究已经延续了五十多年,而随着计算机的兴起,它的发展也早已超出了语言学的范畴。提起AI,你可能会不假思索的想到自然语言处理、人脸识别、无人驾驶等。那么,你…

java web swing 教程_好程序员Java教程解读什么是swing

原标题:好程序员Java教程解读什么是swing好程序员Java教程解读什么是swing,swing是java GUI应用程序,也就是java做的桌面应用。运行swing程序要求用户电脑上有java环境,这一点不太现实也不方便。现在的java主要以web方向为主&…