【python】leetcode中常用函数(持续更新)

2023-10-27

1.1 Counter() 计数器

Counter()可以统计字符串中每个字符出现的次数,也可以统计数组中每个数字出现的次数

print(Counter('aabbccc'))

遍历成员Counter().items()

for val,cnt in Counter('aabbccc').items():
	print(val,cnt)

更新成员Counter().update()

1.2 enumerate() 索引数组

enumerate()会生成下标索引+内容

for i, element in enumerate(seq):
	print i, element

1.3 defaultdict() 缺省字典

defaultdict()是python提供了一种默认值字典的数据结构。它允许我们在定义字典时给所有不存在的key设置默认值,这样当取不存在的key时,就不会报错。
(1)defaultdict(int):初始化为 0
(2)defaultdict(float):初始化为 0.0
(3)defaultdict(str):初始化为""
(4)defaultdict(list):初始化为[0]

1.4 deque() 队列

  • s1 = q.popleft()取出队列左侧值并删除
  • q.append(s1)在队列右侧添加值

1.5 heapq 堆

默认最小堆,也就是第一个数永远是最小的

  • heapq.heapify(list) 申明堆
  • heapq.heappush(heap, item) 增加元素
  • heapq.heappop(heap)删除并返回堆中最小值
  • heapq.heappushpop(heap, item)弹出最小值并增加元素

1.6 reduce()

  • reduce(lambda x,y:x+y ,a) 将数组a的元素两两传入,并递归调用

1.7 map()

  • map(function,a)将数组a的元素传入并执行function函数

2.1 数组操作

  • array[::2]取所有偶数索引
  • array[1::2]取所有奇数索引
  • array[::-1]反转数组
  • array.sort()数组从小到大排列
  • array.sort(reverse=1)数组从大到小排列
  • array.sort(key=lambda x: (-x[0], x[1]))将二维数组第一位降序排序,如果第一位相同,就按第二位升序排序,按照key的函数返回值进行从小到大排序
  • max()求数组最大值
  • min()求数组最小值
  • sum()求数组和
  • set()数组去重
  • choice()返回数组、元组或字符串随机数

index = bisect(ls, x)有序列表二分法查找获取索引值

  • biserct_right寻找右侧第一个值得索引+1
    返回索引+1
  • biserct_left寻找左侧第一个值
    如未查找到值,则返回合适的插入点索引,使得数组有序
    参考文档

2.3 字符串操作

  • s1.split() 将字符串按空格进行分割
  • s1.split('\n') 将字符串按换行进行分割
  • f'{L}({M}){R}' 字符串拼接{}
  • eval() 字符串表达式计算,返回计算结果
  • s1.isdigit()判断字符串是否全是由数字组成
  • s1.islower()判断字符串是否为小写字母

图搜索

1 方向表,即(x,y)的四周的方向。

2 状态表,用来判断该节点是否已经访问过了。

3 边界检测,在进行递归或者入队之前必须对边界进行检测,符合条件才能递归或者入队。

4 判断目标,如果出现目标则进行处理。

3.1 BFS 广度优先搜索

  • 求无权图的最短路径
def bfs(graph, start):
    # 创建一个set记录点是否已被遍历
    visited = set()
    q = Queue()
    q.put(start)
    while not q.empty():
        u = q.get()
        print(u)
        for v in graph.get(u, []):
            if v not in visited:
                visited.add(v)
                q.put(v)
graph = {1: [4, 2], 2: [3, 4], 3: [4], 4: [5]}
bfs(graph, 1)

3.2 DFS 深度优先搜索

  • 寻找两点之间所有路径。
  • 求关键路径。因为它能发现所有路径,第一次dfs求出最长的路径,再dfs一次把所有等于这个长度的路径输出来,可能会输出好几条最长路径。这样就不用求什么最早最晚时间和拓扑了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【python】leetcode中常用函数(持续更新) 的相关文章

随机推荐

  • linux c语言字符串函数replace,indexOf,substring等的实现

    c语言没有像java那么丰富的字符串操作函数 很多有用的函数得自己写 搞了一天 写了几个常用函数 留着以后有用 include
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

    文章目录 章节概要 1 1 初识Scala 1 1 1 Scala的概述 1 1 2 Scala的下载安装 1 1 3 在IDEA开发工具中下载安装Scala插件 1 1 4 开发第一个Scala程序 章节概要 Spark是专为大规模数据处
  • python高级变量类型

    列表概念及操作 1 列表的定义 列表格式 列表名 元素1 元素2 例 my list 1 2 3 True 空列表的定义 my list 或 my list list 2 列表的循环遍历 for 循环遍历 while循环遍历 3 列表的常见
  • 利用Keras实现FGSM算法

    最近项目中需要使用FGSM攻击方法 使用主流的foolbox和cleverhans中的攻击方法时 发现模型不匹配 所以不能继续使用 网上找到的代码也不能使用 需要自己实现一个 根据论文 Explaining and Harnessing A
  • [ACTF新生赛2020]easyre 1

    查壳 是32位 upx壳 脱壳就是找的脱壳软件 我也不是很懂 就说下我的具体操作步骤吧 打开cmd 脱upx壳的软件拖进去 空格 d 空格 有壳文件拖入 解出来了 下面看代码吧 然后就挺简单的 就这点代码 下面那个for循环逆着写就行了 注
  • 欧科云链:2023年5月链上安全事件盘点

    一 基本信息 2023年5月安全事件约造成1800万美元损失 相比上月有显著下降 但安全事件发生频率并未减少 其中针对Jimbos Protocol的攻击造成了约750万美元损失 Arbitrum链的Swaprum项目Rug Pull造成了
  • C++继承-基本语法--继承方式--继承同名成员处理方式--多继承语法--菱形继承

    1 基本语法 继承 减少重复代码 语法 class 子类 继承方式 父类 子类也叫派生类 父类也叫基类 派生类中的成员包括两大部分 一类是从基类继承过来的 一类是自己增加的成员 从基类继承过来的表现其共性 而新增的成员体现了其个性 incl
  • GBASE 8s 并行机制之 PDQ 的基本概念

    Parallel database query PDQ 即并行数据库查询 当处理决策支持类 或数据仓库类查询 查询时 PDQ 特性可以用来极大地提高数据库查询处理的性能 启用PDQ后 GBase 8s 可以将查询操作分布到多个不同的处理器上
  • Kali之MSF的MS08-067漏洞复现详解

    1 MSF初识 MSF即Metasploit Framework 是一个综合性的渗透测试工具 集成信息收集 漏洞扫描 漏洞利用以及提权等功能的工具 目前安装的kali都自带MSF 可以直接在图形界面打开 也可以在kali的终端通过使用命令m
  • 假设检验之T检验、方差检验

    假设检验 spss 差异分析 一 假设检验 1 假设检验的假设 2 原假设与研究假设的关系 3 区分两种假设 4 假设检验统计决策的原理 5 假设检验的步骤 二 t检验 1 单样本T检验 2 独立样本T检验 3 配对样本T检验 三 方差分析
  • 【数据挖掘】从“文本”到“知识”:信息抽取(Information Extraction)

    从 文本 到 知识 信息抽取 这是一个大数据的时代 随着太阳东升西落 每一天都在产生大量的数据信息 人们通常更擅长处理诸如数字之类的结构化数据 但实际情况是 非结构化数据往往比结构化的数据多 当我们从互联网上获取了大量的如文本之类的非结构化
  • 【10天基于STM32F401RET6智能锁项目实战第4天】什么是中断,中断服务函数,系统滴答定时器

    什么是中断 中断服务函数 系统滴答定时器 一 中断的概述 二 外部中断 三 系统滴答定时器 一 中断的概述 二 外部中断 三 系统滴答定时器 如果这篇博文对你有帮助赶紧关注 点赞 收藏吧 感谢你的支持 后面还会有关于中断和系统滴答定时器的相
  • 客户端负载均衡Feign之四:Feign配置

    Ribbon配置 在Feign中配置Ribbon非常简单 直接在application properties中配置即可 如 设置连接超时时间 ribbon ConnectTimeout 500 设置读取超时时间 ribbon ReadTim
  • 涨知识了!这9个鲜为人知的 Python 第三方库真棒!

    欢迎关注 专注 Python 数据分析 数据挖掘 好玩工具 Python 编程充满了机会 它简单明了 拥有许多很酷的库和特色功能 可以使任务变得简单得多 每个 Python 开发人员都必须与热门的第三方库合作 如 NumPy pandas
  • 解决pandas左上角的数据索引、替换

    对于一个dataframe 左上角可以通过如下方式索引到 dataframe columns name 示例代码 import pandas as pd import numpy as np df pd DataFrame np rando
  • Unbuntu20.04(linux)离线安装seata

    一 解压 首先下载seata的安装包 cd usr local目录下执行以下命令 tar zxvf seata server 1 4 0 tar gz 二 修改配置文件 1 修改配置文件registry conf 修改自己的nacos信息
  • CSS更改默认滚动条的样式

    简介 默认滚动条样式又宽又粗 不太美观 一般在网页布局时会将滚动条优化 加一些圆角 改颜色 改宽高等等 此时就需要更改默认滚动条的样式 使用 将下面CSS代码放在全局CSS文件 全局滚动条的样式都会改为自定义设置的样式 只想修改局部某个页面
  • Python异常重试解决方案 Python中异常重试的解决方案详解

    想了解Python中异常重试的解决方案详解的相关内容吗 标点符在本文为您仔细讲解Python异常重试解决方案的相关知识和一些Code实例 欢迎阅读和指正 我们先划重点 python 重试 python 重试机制 python 出错重试 下面
  • ctf-web入门-文件上传

    Web 151 考点 后端无验证 前端校验 查看源码可以发现只能上传png图片 修改为php 写一个php文件上传一句话木马 可以发现已经成功上传 查看上级目录发现可疑文件 查看flag php文件内容得出flag 得到flag Web 1
  • 【python】leetcode中常用函数(持续更新)

    文章目录 1 1 Counter 计数器 1 2 enumerate 索引数组 1 3 defaultdict 缺省字典 1 4 deque 队列 1 5 heapq 堆 1 6 reduce 1 7 map 2 1 数组操作 2 3 字符