0%

定义

可以简单理解成修改其他函数的功能的函数。

@Cache装饰器

为了提高函数的执行效率并减少重复计算,用缓存来存储已经计算过的结果。

位于Python标准库functools模块中。

1
2
3
4
5
6
7
8
from functools import cache 

@cache
def fibonacci_width_cache(n):
if n <= 1:
return n
else:
return fibonacci_with_cache(n-1) + fibonacchi_with_cache(n-2)

使用装饰器通过缓存避免重复计算。

❗注意:

@cache装饰器会将函数的参数作为缓存的键,因此在使用缓存时需要保证函数的参数是可哈希的

Reference

[1] harvey的网络日志

[2] Python函数装饰器

Arduino库

MultichannelGasSensor.c

定义MultichannelGasSensor类,初始化变量

begin() 初始化I2C,根据传入的地址确定版本号

getVersion() 获取传感器模块的版本号,根据返回值来判断具体的版本

sendI2C() 用于向I2C设备发送数据

get_addr_dta() 用于从指定地址读取数据,可用于读取传感器的各种值

readData() 用于读取R0值,存储在从机MCU中

readR() 读取每个通道的电阻值

calcGas() 计算每个通道的气体浓度

changeI2CAddr() 用于更改从机的I2C地址

doCalibrate() 执行校准过程

powerOn() 和 powerOff() 用于开启和关闭传感器

factory_setting() 恢复传感器模块的出厂设置

change_i2c_address() 改变从机的I2C地址

阅读全文 »

前言

为做物联网项目而学习本项目,为方便后续复习而记录。

阅读全文 »

八大排序:桶排序、冒泡排序、选择排序、插入排序、快速排序、希尔排序、归并排序、堆排序。

阅读全文 »

739.每日温度

暴力解法会超过时间限制。

维护一个单调栈,栈中存放的是温度数组各元素的下标而不是温度值,但单调性根据温度值来维护。

核心代码:

1
2
3
4
5
6
for i in range(l-1,-1,-1):
while st and temperatures[st[-1]] <= temperatures[i]:
st.pop()
if st:
answer[i] = st[-1] - i
st.append(i)

比如输入是30,60,90。单调栈存的就是 [3 2 1] 栈顶对应的温度值为30。为了保证先入后出,从后往前遍历。存下标的话,因为我们有原数组,相当于可以映射过去也就有了实际的温度值,如果存实际的温度值就会丢失下标的信息量,并且答案实际也是要从下标推出来的,所以实际上是从单调栈线性推出答案,这就是单调栈的优越性。

前言

目前急需开发经验并且Python已经到了可以进阶的阶段。该项目和HTTP协议相关,故选此项目进行学习。

阅读全文 »

LCR 016

给定一个字符串s,请你找出其中不含有重复字符的最长连续子字符串的长度。

阅读全文 »