我刚做了一个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)时间复杂性相关推荐

  1. python函数做n_【python】定义函数、参数、递归(n!)

    函数### 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向abs函 ...

  2. python可以做什么开发-python适合做什么开发_python未来发展怎么样

    python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...

  3. 学会python能做什么-学会python可以做什么

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 现在学会python之后,可以编写一些查询收录,排名,自动生成网络地图的程序,解决 ...

  4. Python开发——做一个简单的【表白墙】网站

    前言 大家早好.午好.晚好吖 ❤ ~ 今天我们要用Python做Web开发,做一个简单的[表白墙]网站. 众所周知表白墙的功能普遍更多的是发布找人,失物招领, 还是一个大家可以跟自己喜欢的人公开表白的 ...

  5. python能做什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么

    大概一年多以前,和几个小伙伴均认同一个趋势:觉得通过技术手段获取网上越来越丰富的数据,并基于这些数据做分析及可视化,必能产生有价值的结果,帮助大家改善生活.(大数据被叫烂了,所以用低调的方式来解释我们 ...

  6. python能做游戏吗-python能做游戏吗

    能,但不适合. 用锤子能造汽车吗? 谁也没法说不能吧?地球上也有很多汽车,是用锤子造出来的..但一般来说,还是用工业机器人更合适对吗? 比较大型的,使用Python的游戏有两个,一个是<EVE& ...

  7. 大学python和vb哪个简单-python和vb哪个简单

    Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.是一种可用于 ...

  8. python可以做什么项目-python都能做什么

    python作为一种功能强大,并且简单易学的编程语言而广受好评,那么python能做什么呢?概括起来有以下几个反面. 1.wep开发 使用python的一个基本应用就是进行wep开发.在国内,大一些的 ...

  9. python可以做什么系统-python能做哪方面的工作

    Python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐.那么,Python 的应用领域有哪些呢? 概括起来,Python的应用领域主要有如下几个,这也是学完python将要从事的相 ...

最新文章

  1. Mysql 主从延时监控(pt-heartbeat)详解
  2. tensorflow keras 对应版本
  3. php在线打开pdf文件
  4. 猿团专访云信CTO阙杭宁——网易云信“稳定”背后的秘密
  5. jQuery.ready in CRM Fiori Opportunity Application
  6. Golang list双向链表源码走读
  7. 世界上速度最慢的10种动物,做什么都慢半拍
  8. 电子商务网站源码HTML5+CSS3+JavaScript
  9. word转换html 批量,Word批量转HTML工具
  10. Ubuntu16.04 安装Firefox火狐浏览器中国版使用及升级
  11. c# 模拟串口通信 SerialPort
  12. 开发power apps canvas时用到的一些公式和小技能
  13. 海康威视工业相机驱动下载地址
  14. Data truncation: Data too long for column ‘xxx‘ at row xxx问题详解
  15. https://acs.jxnu.edu.cn/problem/GYM103495E
  16. APP系列,学院专题讲座图像记录软件推荐
  17. docker 执行py文件
  18. 计算机型号win7,教你win7系统电脑内存条型号怎么看
  19. 八键电话号码的字母组合
  20. photoshop中如何使用”颜色替换“替换图片中的黑色?

热门文章

  1. 毕业设计-基于Python爬虫的疫情数据可视化系统
  2. Spring体系常用方法(一)
  3. 企业——Docker容器的搭建及简单应用
  4. 改变文件权限的用户身份
  5. ThinkPhp知识大全(非常详细)
  6. web.xml文件头出错
  7. javascript 键值转换
  8. SQL经典语句(转载)
  9. 云服务器主机性能测试,云服务器主机性能测试
  10. shell for循环1到100_浅谈Linux下shell 编程的for循环常用的6种结构