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

网站建设托管定制合肥网站建设之4个细节要注意

网站建设托管定制,合肥网站建设之4个细节要注意,手机写网页,wordpress英文版改中文Python数据结构综合应用:实战案例与练习 一、数据结构回顾 本周学习的核心数据结构及其Python实现方式如下: 数据结构特点Python实现示例列表(List)有序,可修改,动态数组my_list [1, 2, 3]元组&#xf…

Python数据结构综合应用:实战案例与练习

一、数据结构回顾

本周学习的核心数据结构及其Python实现方式如下:

数据结构特点Python实现示例
列表(List)有序,可修改,动态数组my_list = [1, 2, 3]
元组(Tuple)有序,不可修改my_tuple = (1, 2, 3)
栈(Stack)LIFO(后进先出)使用列表的append()pop()
队列(Queue)FIFO(先进先出)使用collections.deque
双向链表快速插入/删除自定义节点类实现
哈希表O(1)时间复杂度查找字典dict类型
二叉搜索树左子树值 < 根 < 右子树值自定义树节点类
图(Graph)节点与边的集合字典表示邻接表

二、实战案例解析

案例1:LRU缓存实现

需求场景

设计一个最近最少使用缓存,当容量达到上限时淘汰最久未使用的数据。

实现方案
class DLinkedNode:def __init__(self, key=0, value=0):self.key = keyself.value = valueself.prev = Noneself.next = Noneclass LRUCache:def __init__(self, capacity: int):self.cache = {}self.capacity = capacityself.head, self.tail = DLinkedNode(), DLinkedNode()self.head.next = self.tailself.tail.prev = self.headdef _add_node(self, node):node.prev = self.headnode.next = self.head.nextself.head.next.prev = nodeself.head.next = nodedef _remove_node(self, node):prev = node.prevnext = node.nextprev.next = nextnext.prev = prevdef _move_to_head(self, node):self._remove_node(node)self._add_node(node)def get(self, key: int) -> int:if key not in self.cache:return -1node = self.cache[key]self._move_to_head(node)return node.valuedef put(self, key: int, value: int) -> None:if key in self.cache:node = self.cache[key]node.value = valueself._move_to_head(node)else:if len(self.cache) >= self.capacity:last = self.tail.prevself._remove_node(last)del self.cache[last.key]new_node = DLinkedNode(key, value)self.cache[key] = new_nodeself._add_node(new_node)
关键设计
  • 哈希表:快速定位节点位置
  • 双向链表:维护访问顺序,头节点存放最近访问元素

案例2:Dijkstra最短路径算法

算法步骤
  1. 初始化距离字典,起点距离为0,其他为无穷大
  2. 使用优先队列存储未处理的节点
  3. 每次取出距离最小的节点
  4. 更新相邻节点的最短距离
Python实现
import heapqdef dijkstra(graph, start):distances = {vertex: float('infinity') for vertex in graph}distances[start] = 0pq = [(0, start)]while pq:current_dist, current_vertex = heapq.heappop(pq)if current_dist > distances[current_vertex]:continuefor neighbor, weight in graph[current_vertex].items():distance = current_dist + weightif distance < distances[neighbor]:distances[neighbor] = distanceheapq.heappush(pq, (distance, neighbor))return distances# 示例图结构(邻接表)
graph = {'A': {'B': 6, 'D': 1},'B': {'A': 6, 'C': 5},'C': {'B': 5, 'D': 8, 'E': 4},'D': {'A': 1, 'C': 8, 'E': 3},'E': {'C': 4, 'D': 3}
}print(dijkstra(graph, 'A'))  # 输出各节点到A的最短距离

三、综合练习题

1. 无序数组转二叉搜索树

class TreeNode:def __init__(self, val=0):self.val = valself.left = Noneself.right = Nonedef sorted_array_to_bst(nums):if not nums:return Nonemid = len(nums) // 2root = TreeNode(nums[mid])root.left = sorted_array_to_bst(nums[:mid])root.right = sorted_array_to_bst(nums[mid+1:])return root# 使用示例
unsorted = [3, 1, 4, 5, 2]
sorted_arr = sorted(unsorted)
bst_root = sorted_array_to_bst(sorted_arr)

2. 有效括号表达式验证

def is_valid_expression(s: str) -> bool:stack = []brackets = {')': '(', ']': '[', '}': '{'}for char in s:if char in brackets.values():stack.append(char)elif char in brackets:if not stack or stack[-1] != brackets[char]:return Falsestack.pop()return not stack and any(c in '+*-/' for c in s)  # 确保包含运算符print(is_valid_expression("(a+b)*c"))  # True
print(is_valid_expression("((a+b))"))  # False(缺少运算符)

3. 图中所有路径查找

def find_all_paths(graph, start, end, path=[]):path = path + [start]if start == end:return [path]if start not in graph:return []paths = []for node in graph[start]:if node not in path:newpaths = find_all_paths(graph, node, end, path)for p in newpaths:paths.append(p)return paths# 示例图结构
graph = {'A': ['B', 'C'],'B': ['D'],'C': ['D'],'D': ['E'],'E': []
}print(find_all_paths(graph, 'A', 'E'))
# 输出:[['A', 'B', 'D', 'E'], ['A', 'C', 'D', 'E']]

四、总结提升

  1. 数据结构选择原则

    • 需要快速查找 → 哈希表
    • 需要维护顺序 → 链表/队列
    • 需要层级关系 → 树结构
    • 需要复杂关联 → 图结构
  2. 算法优化方向

    • 空间换时间(如LRU缓存)
    • 使用合适的数据结构加速操作
    • 递归与迭代的合理选择
  3. 调试技巧

    • 对于树/图问题,先手动绘制结构图
    • 使用print语句输出中间状态
    • 编写单元测试验证边界条件

建议将每个案例手写实现一遍,并通过LeetCode平台(146-LRU缓存、743-网络延迟时间等)进行强化练习。


文章转载自:

http://r3kc6V0R.fhLfp.cn
http://B9KHsKMU.fhLfp.cn
http://pwcgnSaY.fhLfp.cn
http://xfW5qSWg.fhLfp.cn
http://R0qiJXzs.fhLfp.cn
http://omkbMLzW.fhLfp.cn
http://ZK74TQxZ.fhLfp.cn
http://p0yI13tF.fhLfp.cn
http://J3i4Aq9X.fhLfp.cn
http://eGrSIdgg.fhLfp.cn
http://EvuGyhs9.fhLfp.cn
http://7EtauQcp.fhLfp.cn
http://SieCJPO6.fhLfp.cn
http://kwBE0bcx.fhLfp.cn
http://MDXiqO6r.fhLfp.cn
http://nNhA9KZ1.fhLfp.cn
http://flfHcziW.fhLfp.cn
http://jLI0BL0B.fhLfp.cn
http://3NhNQXEx.fhLfp.cn
http://sMeUUCxT.fhLfp.cn
http://I0LM2uQM.fhLfp.cn
http://EwRRW0D0.fhLfp.cn
http://TNgGJQy7.fhLfp.cn
http://aJ2kQklS.fhLfp.cn
http://3Egxo7Jy.fhLfp.cn
http://43WvP0zt.fhLfp.cn
http://BOGwbf4c.fhLfp.cn
http://VTtZIgtC.fhLfp.cn
http://o4CY7MBY.fhLfp.cn
http://ikcKaQTf.fhLfp.cn
http://www.dtcms.com/wzjs/644932.html

相关文章:

  • 空间刷赞网站推广做的网站为什么看不到图片
  • 杭州做网站小芒网站排名优化师
  • 怎样做旅游摄影网站前山网站建设
  • 邢台网站网页设计公司网站开发与调试实验报告
  • 网站建设答辩ppt要点如何建立论坛网站
  • 山东建设厅网站网址那个有那种网站
  • 三晋联盟做网站需要多钱欧米茄表官方官网
  • 怎么做电子商务的网站旅游最好的网站建设
  • 深圳市做门窗网站有哪些推广摄影工作室网页设计
  • 郑州网站推广效果做网站的公司怎么做业务
  • 古建设计网站内涵吧网站
  • 网站建设公司专业网站研发开发成都微信小程序开发
  • 太原网站搭建推广长沙本地推广
  • 湖州企业网站开发公司php网站成品
  • 微信上浏览自己做的网站吗河南品牌网站建设
  • 上海杨浦区建设网站静态门户网站源码
  • 公司品牌flash网站在rds上安装wordpress
  • 坂田网站设计网络公司给我做网站我有没有源代码版权吗
  • 浙江省建设业协会网站有什么可以做兼职的网站
  • 临沂 网站建设南京建设局网站
  • 做网站青岛小程序模板大全
  • 昆凌做的广告买化妆品网站网站如何吸引
  • 金融行业做网站产品代理平台
  • 网站建设 主机选择网页视频怎么下载到本地视频手机
  • 随州网站设计开发制作网络架构必须满足哪些特性
  • 做外贸网站做成哪种形式好泰安网约车平台有哪些
  • 长春一大网站网站排名优化软件有哪些
  • 网页建站总结报告用jsp做的网站首页
  • 亚马逊品牌网站要怎么做合肥住房城乡建设部的网站
  • 做网站的需要什么软件Linux备份wordpress