教你用python高效刷leetcode

由于Python语法的简洁性,用python来刷leetcode往往能用比别的语言更少的代码量AC。但是如果不是对python很熟悉就会比较尴尬了,如果有些功能明明有高效的内置方法因为不知道要自己实现、或者不了解其复杂度提交时出现超时。

我总结了一下自己在刷leetcode时关于python这个语言的经常被使用的数据结构和内置方法。

基础

离开数据结构,算法就是空中楼阁,所以了解python内置的数据类型用法和其效率是非常有必要的

list

list作为最常见的内置数据结构,其不仅可以当作C语言的数组来使用,一些python特有的特性往往可以事半功倍

append  在list的结尾追加一个元素

sort  对list进行排序,在list长度小的时候使用插入排序,在长度大的时候使用快排,所以其时间复杂度可以视为O(nlgn)

pop  将最后一个元素重list内部弹出并返回

切片  python强大的语法糖之一,不仅可以用非负数索引,负数索引的合理使用可以节省不少代码量

set

set本质是哈希表,会对其内部元素去重,检查一个元素是否在set内部的时间复杂度是O(1)

常用的方法为

add  添加一个元素,就算是用一个元素多次添加,其内部也仅保留一份

pop  随机弹出一个元素并返回

dict

同set一样,dict本质也是哈希表,但是set是单个元素,dict是key-value的组合

setdefault  接受两个入参key、default, 如果dict存在key则不做任何操作,如果不存在key,则创建一个 key其value为default

get  同setdefault一样接受两个参数key、default,如果存在key,则返回其value,否则返回default

pop 同setdefault一样接受两个参数key、default,如果存在key,则删除key返回其value,否则返回default

str

字符串也是一个经常在算法中常用的数据结构,在python中str是不可变对象,支持”+“操作当时效率不高需要慎用

split  用指定的分隔符将str分割为list

strip 返回str去掉首尾的空白符后新的str,原来的str不受影响

join 用str作为连接符连接参数里面的每一个元素,常常用来替代”+“

进阶

这里介绍几个常用的内置函数

int 将一个参数转为int类型,在遇到字母等字符时会抛出错误

sum 返回参数的求和

min 返回多个参数的最小值

max 返回多个参数的最大值

abs 返回一个数字的绝对值

高级

这里对于数据结构的知识点要求就比较高了,仅仅介绍常用方法,如果不了解其特性的还请自己查阅资料

queue 队列

put 入队操作

get 出队操作

list 栈

这里又有list,是因为python没有单独的栈,在需要栈的时候往往使用list

append 入栈

pop 出栈

heapq 堆

仅支持最小堆,有个小技巧:如果最大堆,取反之后再放入堆,取出的时候再取反

heapfiy  将一个list转为最小堆

heappush  往一个最小堆添加元素

heappop  弹出堆中的最小值并返回


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值