数据结构
文章平均质量分 82
八岁爱玩耍
个人博客:https://aishangcengloua.github.io/
展开
-
Python 中的图:A* 算法
文章目录1 什么是A*算法1.1 A* 的基本概念1.2 启发函数的可接受性和一致性2 Python 实现 A* 算法1 什么是A*算法 假设一个走迷宫游戏,我将 A 点定义成起点也就是开始状态,定义 B 为终点也就是结束状态。我们的目标就是找到从 A 走到 B 地最佳路径,如下图所示:我们可以将上述的迷宫看做一张图,在简单的情况下(比如这个),生成的图由少量节点和边组成,BFS、DFS 和 Dijkstra 就足够了。然而,在现实生活中,因为我们通常要处理组合复杂性非常大的问题,我们将不得不处理原创 2022-05-14 19:03:24 · 2748 阅读 · 1 评论 -
LeetCode刷题——字符串
344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例一:输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]示例二:输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]思路:双指针。class Solution:原创 2022-04-21 20:07:29 · 764 阅读 · 1 评论 -
Python 中的图:图的存储结构
文章目录1 什么是图2 图的三种存储方式2.1 边列表(List of Edges)2.1.1 原理2.1.2 Python 实现1 什么是图 图是一种数据结构,可用于对对象之间的层次结构和关系进行建模。它由一组节点和一组边组成。节点表示单个对象,而边表示这些对象之间的关系。注意:可能在不同的文献中节点也被称作顶点,它们指同一个意思。 如果图中的边可以通过双向遍历,则是无向图(undirected),如果只能通过一个方向进行遍历,则是有向图(undirected)。并非图的所有节点都需要与其他原创 2022-04-15 19:32:28 · 5008 阅读 · 7 评论 -
LeetCode——哈希表经典例题
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例二:输入: s = "rat", t = "car"输出: false思路:定义一个数组叫做 record,大小为 26就可以了,初始化为0,因为题目规定两个字符串的的字符均是小写字母。class So原创 2022-04-15 09:02:20 · 1481 阅读 · 0 评论 -
Python 中的图:Dijkstra 算法
介绍 图是最有用的数据结构之一。它们可用于对几乎所有事物进行建模——对象关系和网络是最常见的。图像可以表示为网格状的像素图,句子可以表示为单词的图。图表被用于各个领域,从制图到社会心理学,当然它们在计算机科学中也被广泛使用。因此图搜索和遍历起着重要的计算作用。Dijkstra 算法旨在找到 图中节点 之间的最短路径。它是由荷兰计算机科学家 Edsger Wybe Dijkstra 于 1956 年在思考从鹿特丹到格罗宁根的最短路线时设计的。Dijkstra 算法 多年来一直在发生变化,并且存在各种版本和原创 2022-04-12 19:42:56 · 6843 阅读 · 7 评论 -
LeetCode——二叉树的前中后序遍历
二叉树主要有两种遍历方式:深度优先遍历:先往深走,遇到叶子节点再往回走。广度优先遍历:一层一层的去遍历,也就是常说的层遍历。在深度优先遍历中:有三个顺序,前中后序遍历,这中间的"前中后"指的是遍历父节点的先后顺序,且左节点永远在右节点前面遍历。前序遍历(父左右):F、B、A、D、C、E、G、I、H。中序遍历(左父右):A、B、C、D、E、F、G、H、I。后序遍历(左右父):A、C、E、D、B、H、I、G、F。图片来源:https://zh.m.wikipedia.org/原创 2022-03-27 14:45:40 · 987 阅读 · 1 评论 -
LeetCode——回溯算法的经典问题
17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]class Solution: def letterCombinations(self, digits: str) -> List[str]:原创 2022-03-24 21:13:43 · 851 阅读 · 0 评论