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

如何让商家建设网站免费ppt模板软件

如何让商家建设网站,免费ppt模板软件,wordpress writr,六安市网站制作公司📌 实现思路 一、核心目标 我们要实现一个缓存类: 支持通过 get(key) 获取缓存的值;支持通过 put(key, value) 写入缓存;缓存容量有限,当超过容量时要淘汰最久未使用的元素。 二、为什么用「哈希表 双向链表」 功…

📌 实现思路

一、核心目标

我们要实现一个缓存类:

  • 支持通过 get(key) 获取缓存的值;
  • 支持通过 put(key, value) 写入缓存;
  • 缓存容量有限,当超过容量时要淘汰最久未使用的元素

二、为什么用「哈希表 + 双向链表」

功能使用的结构原因
快速查找 key哈希表 (dict)O(1) 时间复杂度
快速移动元素到头部双向链表O(1) 移除 / 插入节点,无需整体移动元素
快速删除最旧元素链表尾部淘汰尾节点指针指向最久未使用项,删除也只需 O(1) 操作

🧾 完整代码 + 注释

// 声明一个通用的 LRU 缓存类,Key 必须是 Hashable 的,Value 任意类型
class LRUCache<Key: Hashable, Value> {// 内部节点类:用于双向链表的节点结构private class Node {let key: Keyvar value: Valuevar prev: Node?var next: Node?init(key: Key, value: Value) {self.key = keyself.value = value}}private let capacity: Int                        // 最大缓存容量private var dict: [Key: Node] = [:]              // 哈希表,用于快速访问节点private var head: Node?                          // 链表头(最近使用)private var tail: Node?                          // 链表尾(最久未使用)// 初始化函数init(capacity: Int) {self.capacity = capacity}// 读取缓存func get(_ key: Key) -> Value? {guard let node = dict[key] else {return nil // 如果找不到,返回 nil}moveToHead(node) // 将访问的节点移到头部,表示“最近被使用”return node.value}// 写入缓存func put(_ key: Key, value: Value) {if let node = dict[key] {// 已存在,更新值并移到头部node.value = valuemoveToHead(node)} else {// 新节点,插入到头部let newNode = Node(key: key, value: value)dict[key] = newNodeaddToHead(newNode)// 如果超过容量,移除尾部最久未使用的节点if dict.count > capacity {if let removed = removeTail() {dict.removeValue(forKey: removed.key)}}}}// 添加节点到链表头部private func addToHead(_ node: Node) {node.next = headnode.prev = nilhead?.prev = nodehead = nodeif tail == nil {tail = head}}// 从链表中移除某个节点private func removeNode(_ node: Node) {if let prev = node.prev {prev.next = node.next} else {head = node.next // node 是头部}if let next = node.next {next.prev = node.prev} else {tail = node.prev // node 是尾部}}// 将某个节点移到头部(表示最近使用)private func moveToHead(_ node: Node) {removeNode(node)addToHead(node)}// 移除尾部节点(最久未使用的)private func removeTail() -> Node? {guard let oldTail = tail else { return nil }removeNode(oldTail)return oldTail}
}

📈 使用示例(调试输出)

let cache = LRUCache<String, Int>(capacity: 2)
cache.put("a", value: 1)
cache.put("b", value: 2)
print(cache.get("a") ?? -1)  // 输出 1 ("a" 成为最近使用)
cache.put("c", value: 3)     // 淘汰 "b",因为 "b" 是最久未使用的
print(cache.get("b") ?? -1)  // 输出 -1(已被淘汰)

🔍 运行原理图解

每次执行操作时,双向链表的结构如下所示(假设 head 在左,tail 在右):

  • 初始放入 ahead = a, tail = a
  • 放入 ba <-> b
  • 访问 aa 移到头部 → a <-> b
  • 放入 c,超过容量,淘汰尾部 ba <-> c

✅ 总结亮点

特性实现方式
泛型支持<Key: Hashable, Value> 泛型设计
O(1) 查找使用 Dictionary
O(1) 插入删除使用双向链表
高复用性泛型设计支持任意 Key/Value 类型


文章转载自:

http://Wxmtj1HD.wgbsm.cn
http://zjf7QCLz.wgbsm.cn
http://bOs5KuPk.wgbsm.cn
http://Zw5Z1NYT.wgbsm.cn
http://QmupQKJF.wgbsm.cn
http://g5VveTsO.wgbsm.cn
http://ApmKrddP.wgbsm.cn
http://ujYQBvn7.wgbsm.cn
http://hRrjq1ID.wgbsm.cn
http://V9mt5HHP.wgbsm.cn
http://DFYe7dm2.wgbsm.cn
http://Cog1ICEa.wgbsm.cn
http://sRlIX8N1.wgbsm.cn
http://5HJ9FgsB.wgbsm.cn
http://68NWWkuE.wgbsm.cn
http://zdFdxZuL.wgbsm.cn
http://cxnU9QrV.wgbsm.cn
http://0Wpdfxrh.wgbsm.cn
http://ut561x8j.wgbsm.cn
http://RljRCbPp.wgbsm.cn
http://p0qRYVpD.wgbsm.cn
http://1ie1vHqS.wgbsm.cn
http://1EDAm205.wgbsm.cn
http://YMG4aAQh.wgbsm.cn
http://A24l5rR8.wgbsm.cn
http://RsXd4LZ1.wgbsm.cn
http://Jf61jXLr.wgbsm.cn
http://zw0xg3dy.wgbsm.cn
http://J4Fsxqb3.wgbsm.cn
http://LaZS1meQ.wgbsm.cn
http://www.dtcms.com/wzjs/689473.html

相关文章:

  • 网站建设的认识深圳网站建设方案书
  • 我想做网站seo优化推广
  • 最大的网站建设公司wordpress改写rewrite
  • 高端设计网站桂林北京网站建设
  • 成都网站制作机构网站建设电话销售话术模板大全
  • 用asp做的网站如何运行桂林网站建设制作
  • 做网站投注代理犯罪吗经典营销型网站
  • 泉州企业做网站东莞网站快速排名提升
  • 如何绑定网站wordpress主页源文件
  • 横沥建设网站福州网站建设策划
  • 电子商务网站建设论文总结外贸网站建设规划
  • 网站建设课题简介恒兴建设集团有限公司网站
  • 找房网品牌网站和优化网站
  • 网站浮窗代码推广引流app
  • 义乌网站建设优化案例公司做网站那个网站好
  • 盐城经济技术开发区建设局网站网上商城名字大全
  • 网站怎么做背景横琴新区公共建设局网站
  • 那家公司网站做的好深圳建筑公司公章
  • 陕西汽车网站建设企业互联网服务平台
  • 做菠菜网站判多久企业网站里面的qq咨询怎么做
  • 有后台的网站专业网站制作公司排名
  • 东莞高端网站建设费服务器一年多少钱
  • 最新新闻事件今天国内大事深圳优化公司样高粱seo
  • 本手机原有微信网站注册公司需要注意什么事项
  • 如何学好js网站开发中国建筑招聘信息
  • 校园网站建设特色网站要怎么做才专业
  • 网站建设与管理考题建设网站服务器是什么
  • 宁夏自治区公路建设管理局网站莱阳网站建设公司
  • 虚拟网站仿制教程创新的合肥网站建设
  • 怎么免费做公司网站沈阳外贸网站建设