力扣做题杂乱python知识点(更新)

2024-01-14 10:08

本文主要是介绍力扣做题杂乱python知识点(更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符:
表示a-z所有的字符

for i in range(26):print(chr(i+ord('a')))

字符串:
去掉字符串左面的字符:.lstrip(‘xxx’)

字典:
根据一个set创建一个初始化为0的字典:

dic = {}.fromkeys(set_,0)

遍历字典得到的是字典key名。
遍历dic.value得到的是字典每个key对应的值

列表:
把二维列表变成一个一维列表:[k for item in target for k in item]
求整数数组的子集:i对所有全素遍历,t+[i]每次t都是以前的子集
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

for i in nums:res += [t+[i] for t in res]

递归:
解决子集满足某一条件的问题,如子集中某几个数加和为n求这些自己,能够用到递归。递归设置函数需要给定参数,包括:需要处理的数据(参数1);在递归中不断修改最后用于判断递归结束的目标值(参数2);递归中用于控制每层循环的参数level(参数3);以及其他具体问题所需要的参数。递归中用if 和 elif控制进入下层递归或者是结束递归,在上面的例子中,if:当参数2满足一定要求时候返回结果return结束递归。elif参数2满足要求2的时候进行递归,当参数2不属于前两者时我们不需要它所以空走一次不做任何处理。每次对target在传入参数部分进行更改使得递归能够有穷。递归中的循环如for i in range(level)使用参数3来控制循环的部分。

栈计算:
栈倒是很了解了,但是什么时候使用依然不是很熟练。这次正好遇到一个栈的题很不错。

T = [73, 74, 75, 71, 69, 72, 76, 73]
n = len(T)
stack = []
res = [0]*n
for i in range(n):while stack and T[stack[-1]] < T[i]:tmp = stack.pop()res[tmp] = i - tmpstack.append(i)
res

力扣中的每日温度这道题,题中要求找到最快的升温天数,在栈的结构中我们可以看到定义了stack空列表,以及for和while两层循环。res的目的是为了记录每天的最快升温天数,在这里仅仅起到了一个记录的作用,记录了当前天数i和上次记录点tmp的差值,也就是最后的结果。
我们的注意力放在栈的使用上:在一层循环中目的是为了遍历天数,用i代表每一天。二层循环才是栈的使用:判断stack是否为空并且判断业务逻辑(栈中最后一天的温度是否比今天的温度还低)。那么栈中的温度是什么?
在这里插入图片描述
在这里插入图片描述
可以看到每次while循环都比较了栈中最后一个元素和当前天数谁的温度更高。之所以没能直观理解是因为:记录的值并不是按照天数顺序来的,而是按照出栈元素来确定先写入谁的值。每次循环如果栈尾温度比当前温度高,则不是我们要的温度上升,所以我们把这些逐渐降低的天数放在一个栈里等待一个高于栈尾的温度,然后逐一出栈,(因为i天的温度不一定比之前所有递减的温度都高)并且把出栈的天数补写在res[tmp]中。
根据图一来看,res前两个1都是因为后面紧接着就有一天温度升高,而之后出现了stack【234】是因为在T[234]三个数温度递减,我们把下表放进了栈中,到了第四天对比第五天温度上升,出栈后把差值写在了res【4】的位置。之后3也因为比第五天温度低写在了res【3】的位置,这样就有了[1,1,0,2,1]这样的结构了。
栈的结构很简单,但是使用起来有时候还真的是需要理解才好用:它在这里用来装载温度递减的天数,因为我们需要温度上升,这些递减的天数可以等到一个高温天数再逐一处理。如果没有高温,正好不会处理他们,值为0。这样做速度很快,因为内循环仅仅判断了栈中的元素,也就是那些等待升温的天数。

这篇关于力扣做题杂乱python知识点(更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604792

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学