待字闺中的微信公共帐号上看到的,时间复杂度O(n)、空间复杂度O(n)能想出来。O(1)的想不出来呀。给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么?
2 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
算法代码,Python#encoding:utf-8'''Createdon2013年9月13日'''importsysdefmain():a=[1,2,3,4,4,6,7,7,9]n=len(a)fork,vinenumerate(a):a[k]=v*nprintafork,vinenumerate(a):a[(v/n-1)]+=1printafork,vinenumerate(a):a[k]=a[k]%nomitted=[]duplicated=[]fork,iinenumerate(a):ifi<1:omitted.append(k+1)elifi>1:duplicated.append(k+1)printomittedprintduplicatedif__name__=='__main__':sys.exit(main())
添加回答
举报
0/150
提交
取消