当前位置: 首页 > news >正文

自用力扣刷题总结经验

一.哈希

通过哈希函数将键key映射到数组索引实现快速访问的数据结构,数据以key-value进行存储,通过键直接计算存储位置,无需遍历。

哈希表能实现O(1)复杂度的查询

python实现哈希表相关操作:
(1)创建:m = {}或者m = dict()

(2)插入:m["key"] = value

(3)查找:m["key"]或者m.get("key")

(4)删除:del m["key"]

(5)检查存在:"key" in m

(6)遍历:for k,v in m.items()

(7)获取大小:len(m)

两种遍历方式的区别:

my_dict = {"a": 1, "b": 2, "c": 3}

for k, v in enumerate(my_dict): print(f"k={k}, v={v}")

结果为:k=0, v=a k=1, v=b k=2, v=c

for k, v in my_dict.items(): print(f"键={k}, 值={v}")

结果为:键=a, 值=1 键=b, 值=2 键=c, 值=3

同时使用enumerate()和items()

for idx, (k, v) in enumerate(my_dict.items()): print(f"索引={idx}, 键={k}, 值={v}")

结果为:索引=0, 键=a, 值=1 索引=1, 键=b, 值=2 索引=2, 键=c, 值=3

二.数组/列表/字典(哈希表)

1.基本概念

(1)数组:元素类型必须相同,在内存中连续存储

(2)列表:元素类型可以不同,如int和字符串等,my_list = [1, "hello", 3.14, True, [1, 2, 3]]

内存非连续,存储的是对象引用(指针),可以动态调整大小

python和javascript中列表等价于动态数组,但是可以存储不同元素类型

(3)字典:数组和列表均由value和对应下标组成,而字典则由key和value组成

排序串作为key,key是查找依据,value是目标数据。key必须唯一,value则可以重复

已知key查找value:value = dict["key"]或者value = dict.get["key"]

已知value查找key:通过遍历方法,但是一个value可能有多个对应的key

target = value

for k,v in dict.items():

if target in v:

key = k

2.实战经验

(1)python创建:

a = []或a = list() 列表/动态数组

a = {}或者a = dict() 字典

a = ()或者a = tuple() 元组 ,有序不可变,可作为字典key

a = set() 集合,无序不重复

以上也可以

列表转化为集合:a_set = set(a),会在去重的同时构建一个集合,本质上是只有key,没有value的字典,查找复杂度也是O(1)

转化为列表:a_list=list(a),例如list("abc")['a', 'b', 'c']

转化为字典(需要传入键值对序列),例如dict([('a', 1)]){'a': 1}

(2)遍历字典:

遍历key:for key in a或者for key in a.keys()

遍历value:for value in a.values()

同时遍历key和value:for key,value in a.items()

(3)列表/字典/集合的元素添加/删除:

1.列表:

lst.append(x):在列表末尾添加x

lst.remove(x):删除列表中第一个x,不存在则报错

lst.pop():删除并返回最后一个元素

lst.pop(1):删除并返回索引为1的元素

2.集合:

st.add(x):add会在添加元素的同时自动去重

st.remove(x):删除集合中的x,不存在则报错

st.discard(x):删除x,不存在也不会报错

3.字典:

my_dict = {'a': 1, 'b': 2, 'c': 3}

字典通过键值对赋值进行元素添加:d['c']=3

通过pop进行删除:value = my_dict.pop('a') # value = 1, my_dict = {'b': 2, 'c': 3}

或者通过del进行删除:del my_dict['a'] # my_dict = {'b': 2, 'c': 3}

del可以删除整个字典:del my_dict

(4)字符串认识:

1.字符串在操作上可以等价于列表

s = "Hello, World!"

可以遍历:for char in s:

可以索引:print(s[0]) # 'H'

可以切片:print(s[0:5]) # 'Hello'一定注意切片操作也是左闭右开区间

可以计算长度:print(len(s)) # 13

可以使用 in 运算符:print('H' in s) # True

可以使用 + 连接:s2 = s + " How are you?" print(s2) # 'Hello, World! How are you?'

可以使用 * 重复:print("Hi" * 3) # 'HiHiHi'

以外也支持min,max函数

2.字符串和列表的相互转化:
# 字符串转列表 s = "Hello" lst = list(s) print(lst) # ['H', 'e', 'l', 'l', 'o']

# 列表转字符串 lst = ['H', 'e', 'l', 'l', 'o'] s = ''.join(lst) print(s) # 'Hello'

# 使用分隔符 lst = ['apple', 'banana', 'cherry'] s = ', '.join(lst) print(s) # 'apple, banana, cherry'

3.字符串和列表的区别:

(1)可变性:列表可以赋值,可以append,可以remove,但字符串无法更改,想要更改只能通过创建新字符串完成

(2)方法差异:就是一些函数不同,暂时不重要

http://www.jsqmd.com/news/625879/

相关文章:

  • YOLO部署全过程
  • 基于STM32的智能小车电磁循迹系统优化与性能提升
  • YOLO-Master 与 YOLO 开始吭
  • 【LeetCode刷题日记】:从 LeetCode 经典题看哈希表的场景化应用---数组、HashSet、HashMap 选型与算法实战
  • 力扣热门100题之岛屿的数量(DFS/BFS经典题)
  • 大模型到底是啥?运维人分钟搞懂(不用数学)侗
  • 数据摄取构建模块简介(预览版)(一)录
  • 告别Arduino IDE!在PlatformIO上玩转ESP32的SPIFFS文件系统(附完整代码)
  • 一季度收官,AI在交通运输行业表现如何?
  • 技术选型评估框架需求技术与团队匹配
  • 从控制理论到ADS仿真:深入浅出理解奈奎斯特判据,让你的放大器不再自激
  • OneMore插件终极指南:160+功能让OneNote效率翻倍的完整教程
  • 从ResNet到Neural Radiance Fields原生识别:2026奇点大会揭示的3代演进拐点,错过本次将滞后至少18个月技术窗口期
  • 使用Alpine配置WSL ssh门户攘
  • 2026徐州名表回收靠谱商家推荐排行:避坑指南+市场深度解析 - 野榜精选
  • Mirage Flow智能体开发:基于skills构建专业Agent
  • Docker挂载卷常见问题排查:为什么挂载后容器内是空的?
  • AI原生研发必须立刻重构的多语言基建(仅剩最后6个月窗口期——W3C新标准ICU 75+强制要求CLDR v44语义映射)
  • 保姆级避坑指南:在STM32MP157上为M4核移植RT-Thread并打通OpenAMP通信
  • 2026徐州二手奢包回收全解析:定价标准、避坑指南与优质商家推荐 - 野榜精选
  • 2026 南京建筑智能权威 TOP5 测评:技术深耕与实效落地,舒特机电领跑行业新标杆 - 小艾信息发布
  • 如何快速解决Sunshine游戏流媒体服务器常见问题:终极故障排除指南
  • 你的SSH密钥可能已经过期了稻
  • AcousticSense AI帮你听歌识曲:不只是识别歌曲,还能分析风格
  • 电源实战手记(三):从零解析反激式ACDC开关电源的设计与优化
  • 为什么你的GitHub下载速度慢如蜗牛?Fast-GitHub让你3分钟实现极速访问
  • 求proteus的各位大佬帮助
  • 2026徐州黄金回收市场深度解析:避坑指南+靠谱商家与门店推荐 - 野榜精选
  • DIV布局笔记
  • COCO2017数据集:从下载到应用的全方位指南