LeetCode刷题前必须要知道的时间复杂度

LeetCode经常需要优化时间复杂度,在互联网面试的过程中也经常被问到。看完视频清华计算机博士带你学习Python算法+数据结构之后,感觉以下几点讲的挺好的,故记录下:


在这里插入图片描述


在这里插入图片描述
原因:强调的是大概的时间,不是精确的时间


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


代码感受一下:

在同一个工程文件下创建两个py文件,文件名分别为:cal_time.py、main.py,比较线性查找与二分查找的时间复杂度:

main.py

from cal_time import *

@cal_time
def Linera_search(nums, value):
    for index, num in enumerate(nums):
       if num == value:
           return index
    else:
        return None
        
    
@cal_time
def binary_search(nums, value):
    left = 0
    right = len(nums)-1
    while left <= right:
        mid = (left + right)//2
        if value == nums[mid]:
            return mid
        elif value > nums[mid]:
            left = mid + 1
        elif value < nums[mid]:
            right = mid - 1
    else:
        return None

nums = list(range(100000))
value = 3000
Linera_search(nums, value)
binary_search(nums, value)

cal_time.py

import time

def cal_time(func):
    def wrapper(*args, **kwargs):
        t1 = time.time()
        result = func(*args, **kwargs)
        t2 = time.time()
        print("%s running time:%s secs." %(func.__name__, t2 - t1))
        return result
    
    return wrapper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值