题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
来看第一种解法
1 num = [1, 2, 3, 4]2 """
3 根据题中'互不相同'要求,创建一个集合(去重),存放三位数4 注意{}仅用于创建空字典!set()函数用来创建集合5 """
6 s =set()7 #遍历整个列表三次,组成三位数
8 for i innum:9 for j innum:10 #去掉与i重复的数字
11 if j !=i:12 for k innum:13 #去掉与i,j重复的数字
14 if k != j and k !=i:15 n = 100*i + 10*j +k16 #注意集合添加元素的方法为add和update
17 s.add(n)18 print("无重复的三位数个数:", len(s))19 print("分别是:", s)
这种解法时间复杂度为O(n2), 其中的列表可以换成range生成器
1 s =set()2 #遍历整个列表三次,组成三位数
3 for i in range(1, 5):4 for j in range(1, 5):5 #去掉与i重复的数字
6 if j !=i:7 for k in range(1, 5):8 #去掉与i,j重复的数字
9 if k != j and k !=i:10 n = 100*i + 10*j +k11 #注意集合添加元素的方法为add和update
12 s.add(n)13 print("无重复的三位数个数:", len(s))14 print("