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来完成它,但是无法理解它:(
python函数做n_简单Python函数的O(N)时间复杂性相关推荐
- python函数做n_【python】定义函数、参数、递归(n!)
函数### 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向abs函 ...
- python可以做什么开发-python适合做什么开发_python未来发展怎么样
python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...
- 学会python能做什么-学会python可以做什么
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 现在学会python之后,可以编写一些查询收录,排名,自动生成网络地图的程序,解决 ...
- Python开发——做一个简单的【表白墙】网站
前言 大家早好.午好.晚好吖 ❤ ~ 今天我们要用Python做Web开发,做一个简单的[表白墙]网站. 众所周知表白墙的功能普遍更多的是发布找人,失物招领, 还是一个大家可以跟自己喜欢的人公开表白的 ...
- python能做什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么
大概一年多以前,和几个小伙伴均认同一个趋势:觉得通过技术手段获取网上越来越丰富的数据,并基于这些数据做分析及可视化,必能产生有价值的结果,帮助大家改善生活.(大数据被叫烂了,所以用低调的方式来解释我们 ...
- python能做游戏吗-python能做游戏吗
能,但不适合. 用锤子能造汽车吗? 谁也没法说不能吧?地球上也有很多汽车,是用锤子造出来的..但一般来说,还是用工业机器人更合适对吗? 比较大型的,使用Python的游戏有两个,一个是<EVE& ...
- 大学python和vb哪个简单-python和vb哪个简单
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.是一种可用于 ...
- python可以做什么项目-python都能做什么
python作为一种功能强大,并且简单易学的编程语言而广受好评,那么python能做什么呢?概括起来有以下几个反面. 1.wep开发 使用python的一个基本应用就是进行wep开发.在国内,大一些的 ...
- python可以做什么系统-python能做哪方面的工作
Python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐.那么,Python 的应用领域有哪些呢? 概括起来,Python的应用领域主要有如下几个,这也是学完python将要从事的相 ...
最新文章
- Mysql 主从延时监控(pt-heartbeat)详解
- tensorflow keras 对应版本
- php在线打开pdf文件
- 猿团专访云信CTO阙杭宁——网易云信“稳定”背后的秘密
- jQuery.ready in CRM Fiori Opportunity Application
- Golang list双向链表源码走读
- 世界上速度最慢的10种动物,做什么都慢半拍
- 电子商务网站源码HTML5+CSS3+JavaScript
- word转换html 批量,Word批量转HTML工具
- Ubuntu16.04 安装Firefox火狐浏览器中国版使用及升级
- c# 模拟串口通信 SerialPort
- 开发power apps canvas时用到的一些公式和小技能
- 海康威视工业相机驱动下载地址
- Data truncation: Data too long for column ‘xxx‘ at row xxx问题详解
- https://acs.jxnu.edu.cn/problem/GYM103495E
- APP系列,学院专题讲座图像记录软件推荐
- docker 执行py文件
- 计算机型号win7,教你win7系统电脑内存条型号怎么看
- 八键电话号码的字母组合
- photoshop中如何使用”颜色替换“替换图片中的黑色?