美文网首页
python - 简单算法题 - 求三位数组合

python - 简单算法题 - 求三位数组合

作者: Gaafung峰 | 来源:发表于2020-07-20 15:43 被阅读0次

求三位数组合

lst = [3, 6, 2, 7]

这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们

思路分析

从4个数里面取3个数,且不重复,然后进行拼接,做3个for循环加判断不相等即可。

与排列组合相同,取三个数,不放回,并且有顺序。C_4^3*P^3_3 = 4 * 3! = 24 种取法可能。(题目特殊,lst各不相同,若有相同需要先在重复中二选一C_2^1,但对于结果输出不影响,只是增加取法可能)

示例代码

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 = lst.copy()
    tmp.remove(a)
    for b in tmp:
        tmp2 = tmp.copy()
        tmp2.remove(b)
        for c in tmp2:
            print(a*100 + b*10 + c)

这样子反而空间复杂度增加了,语句变得冗余。

相关文章

  • python - 简单算法题 - 求三位数组合

    求三位数组合 这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们 ...

  • 2020-07-29

    python算法1、求三位数组合四个数字能组成多少个互不相同且无重复数字的三位数? 2.生成矩阵已知两个矩阵lst...

  • Python爬虫作业第一次分享

    开启Python的漫长道路 今天的测试题关于一道很简单的算法,本以为满简单的但是还是坑满满。 第一题:求100以内...

  • python算法题---求众数

    刷题顺序是按照LeetCode的算法面试题汇总进行的. 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组...

  • python简单算法题(二)

    1)求一个矩阵的转置 matrix_before = [[1, 4], [2, 5], [3, 6]] matri...

  • python简单算法题(一)

    1)只能输入整数,并生成列表,实现最大数,将列表从小到大排序。 # define a funtion which ...

  • 最简单的算法题,你会吗?

    leetcode上算法第一题,求两数之和,是最简单的算法题。 给定一个整数数组 nums 和一个目标值 targe...

  • 零基础python刷leetcode -- 1. Two Sum

    算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,从第一题开始,从简...

  • Python 算法 第一章 介绍

    题学习使用教材<Python算法教程> Python 算法教程 在此进行记录,方便以后学习,加深记忆.

  • python - 简单算法题 - 生成矩阵

    题目要求 已知两个列表 请写算法,将两个列表交叉相乘,生成如下的矩阵 思路分析 根据观察,矩阵的横列表个数取决于l...

网友评论

      本文标题:python - 简单算法题 - 求三位数组合

      本文链接:https://www.haomeiwen.com/subject/krkykktx.html