1234无重复三位数python_python-简单算法题-求三位数组合

1234无重复三位数python_python-简单算法题-求三位数组合

2023年6月29日发(作者:)

1234⽆重复三位数python_python-简单算法题-求三位数组合求三位数组合lst = [3, 6, 2, 7]

这四个数字能组成多少个互不相同且⽆重复数字的三位数?⽐如362算⼀个,326算⼀个,请逐个输出他们思路分析从4个数⾥⾯取3个数,且不重复,然后进⾏拼接,做3个for循环加判断不相等即可。与排列组合相同,取三个数,不放回,并且有顺序。种取法可能。(题⽬特殊,lst各不相同,若有相同需要先在重复中⼆选⼀,但对于结果输出不影响,只是增加取法可能)⽰例代码lst = [3, 6, 2, 7]for i in lst: for j in lst: for k in lst: if i != j and j != k and k!=i: print(int(str(i)+str(j)+str(k))判断⽅式还可以是:if i not in (j,k) and j !=k:

分析时间复杂度在时间复杂度上⾯ n = 4,有3个for循环。第⼀个for循环中f(n)=n第⼆个for循环中f(n)=n^2第三个for循环中f(n)=n^3该算法的为 n^3+n^2+n推导⼤O阶⽅法:# 1、⽤常数1取代运⾏时间中的所有加法常数

n^3 + n^2 + 1 ##2、在修改后的运⾏次数函数中,只保留最⾼阶项

n^3

# 3、如果最⾼阶项存在且不是1,则去除与这个项相乘的常数

n^3

故最终时间复杂度O(n) = n^3优化思考第⼆个for循环和第三个for循环,最终要取的数据都是与第⼀个for循环取得不同,那么我们在循环过程中直接建⽴取数⽅法。⽐如第1位数被取了之后,第⼆个for循环只⽤从剩下的数据当中取数即可。代码⽰例lst = [3, 6, 2, 7]for a in lst: tmp = () (a) for b in tmp: tmp2 = () (b) for c in tmp2: print(a*100 + b*10 + c)这样⼦反⽽空间复杂度增加了,语句变得冗余。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687976659a62762.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信