时间复杂度

  1. 题目: 输入长度为 N的整数数组 nums ,判断此数组中是否有数字 77 ,若有则返回 true ,否则返回 falsefalse 。

解题算法: 线性查找,即遍历整个数组,遇到 77 则返回 true 。

def f(n):
    k=0
    for i in range(len(n)):
        if n[i]==7:
            print( 'true')
            k+=1
            break
    if k==0:print('false')
l = list(map(int,input().split()))
f(l)
    

  1. 生物学科中的 “细胞分裂” 即是指数级增长。初始状态为 11 个细胞,分裂一轮后为 2 个,分裂两轮后为 4个,……,分裂 NN 轮后有 2^N2
    N
    个细胞。

算法中,指数阶常出现于递归,算法原理图与代码如下所示。

def algorithm(N):
    if N <= 0: return 1
    count_1 = algorithm(N - 1)
    count_2 = algorithm(N - 1)
    return count_1 + count_2
n=int(input())
print(algorithm(n))

  1. 阶乘阶对应数学上常见的 “全排列” 。即给定 NN 个互不重复的元素,求其所有可能的排列方案,则方案数量为:

N×(N−1)×(N−2)×⋯×2×1=N!

如下图与代码所示,阶乘常使用递归实现,算法原理:第一层分裂出 N 个,第二层分裂出 N - 1 个,…… ,直至到第 N 层时终止并回溯。

def algorithm(N):
    if N <= 0: return 1
    count = 0
    for _ in range(N):
        count += algorithm(N - 1)
    return count

n=int(input())
print(algorithm(n))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值