Python 编程算法题相关

本文分享了如何在LeetCode上解决常见算法问题,如有效括号匹配和链表倒数第N个节点。还介绍了冒泡排序和快速排序的代码实现以及它们的时间复杂度和空间复杂度。
摘要由CSDN通过智能技术生成

整理了出现频率比较高的算法题目,然后在 LeetCode 上,找到我认为写得比较好理解的答案。

建议是多敲敲代码,看答主的解题思路。


有效的括号

给一个字符串,字符串里有(){}[]这六个符号,设计一个算法,判断这些符号是否成对匹配,即要检验这些括号是否都是成对出现的。

https://leetcode-cn.com/problems/valid-parentheses/solution/valid-parentheses-fu-zhu-zhan-fa-by-jin407891080/

链表的倒数第 N 个节点

https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/solution/mian-shi-ti-22-lian-biao-zhong-dao-shu-di-kge-j-11/

请写一下冒泡排序和快速排序的代码,时间复杂度是多少?空间复杂度是多少?

冒泡排序:

一次巡回中,如果出现逆序的情况,就交换,一直往后移动直至巡回结束,开始下一个巡回,当没有交换发生的时候则结束。每次巡回的时候最后的元素是最大的。时间复杂度O(N^2)

def bubble_sort(lst):
    count = len(lst)
    if count < 2:
        return lst
    for i in range(count):
        for j in range(1, count-i):
            if lst[j-1] > lst[j]:
                lst[j-1], lst[j] = lst[j], lst[j-1]
    return lst
def bubble_sort1(lst):
    count = len(lst)
    if count < 2:
        return lst
    for i in range(count):
        for j in range(i+1, count):
            if lst[i] < lst[j]:
                lst[i], lst[j] = lst[j], lst[i]
    return lst

快速排序

def quick_sort(lst):
    if len(lst) < 2:  # 基线条件
        return lst
    else:
        base = lst[0]  # 递归条件
        less = [i for i in lst[1:] if i <= base]  # 所有小于 base 的放一组
        greater = [i for i in lst[1:] if i > base]  # 所有大于 base 的放一组
        return quick_sort(less) + [base] + quick_sort(greater)

思路解释:

https://baijiahao.baidu.com/s?id=1617821935743300963&wfr=spider&for=pc

剩余内容,请通过下方获取方式购买后跳转阅读~


获取方式

本专栏内容为付费内容,你可以按照实际需求下单购买,谢谢你的支持~

软件测试工程师修炼手册

https://i-blog.csdnimg.cn/blog_migrate/c57d1acd198bce7f1b08f2227e052006.jpeg#pic_center

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖遥Janic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值