K 个一组翻转链表
发表于|更新于|后端
|浏览量:
在一次翻转完成之后
nxt.next = cur 这一次翻转的尾节点应指向下一次的头节点
p0.next = pre 上次翻转的尾节点应指向这次翻转的头节点
p0 变为这次翻转后的尾节点
文章作者: 褚成志
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 褚成志的分享站!
相关推荐
2026-04-09
布隆过滤器
布隆过滤器布隆过滤器由「初始值都为 0 的位图数组」和「 N 个哈希函数」两部分组成。当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。 第一步,使用 N 个哈希函数分别对数据做哈希计算,得到 N 个哈希值; 第二步,将第一步得到的 N 个哈希值对位图数组的长度取模,得到每个哈希值在位图数组的对应位置。 第三步,将每个哈希值在位图数组的对应位置的值设置为 1; 查询的时****候只要有一个为 0,就认为数据 x 不在数据库中。 没有的一定没有,有的也可能没有 黑名单,爬虫去重 只有加入和查询,不要求删除, 极大减少内存, 但是必须允许一定程度的失误率,会误杀好人,但是不会漏杀坏人 布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你** “某样东西****一定不存在或者可能存在****”。** 如果存在那就是可能存在(hash的碰撞) 如果不存在那就一定不存在 相比于传统的...
2026-04-09
雪花算法
原文连接: https://blog.csdn.net/lq18050010830/article/details/89845790 SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的 这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号 1 bit:是不用的,为啥呢?因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。 41 bit:表示的是时间戳,单位是毫秒。41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ^ 41 - 1 个毫秒值,换算成年就是表示 69 年的时间。 10 bit:记录工作机器 id,代表的是这个服务最多可以部署在 2^1...
2026-04-09
一致性哈希原理
数据服务器如何组织:设计时候保证高频中低频都有数量。否则就是忙的忙死闲的闲死 逻辑层服务器:增加和减少机器的时候代价很小 数据层服务器:增加和减少机器的时候代价是全量的 取模服务器个数的问题–缓存雪崩取模 也可以 实现数据底层均匀分布,hash(图片名称)% N 当服务器数量发生改变时,所有缓存在一定时间内是失效的,当应用无法从缓存中获取数据时,则会向后端服务器请求数据,同理,假设3台缓存中突然有一台缓存服务器出现了故障,无法进行缓存,那么我们则需要将故障机器移除,但是如果移除了一台缓存服务器,那么缓存服务器数量从3台变为2台,如果想要访问一张图片,这张图片的缓存位置必定会发生改变,以前缓存的图片也会失去缓存的作用与意义,由于大量缓存在同一时间失效,造成了缓存的雪崩,此时前端缓存已经无法起到承担部分压力的作用,后端服务器将会承受巨大的压力,整个系统很有可能被压垮,所以,我们应该想办法不让这种情况发生,但是由于上述HASH算法本身的缘故,使用取模法进行缓存时,这种情况是无法避免的,为了解决这些问题,一致性哈希算法诞生了。 简单的对服务器数量进行取模,当缓存服务器数量发生变化时,...
2026-04-09
分布式共识问题、理论、协议和算法
兰伯特有很多关于分布式的理论,这些理论都很经典(比如拜占庭将军 问题、Paxos),但也因为太早了,与实际场景结合的不多,所以后续的众多算法是在这个 基础之上做了大量的改进(比如Raft 等) 两种分布式共识问题是否存在伪造或者篡改的恶意行为。 忠诚的将军,正常运行的计算机节点; 叛变的将军,出现故障并会发送误导信息的计算机节点; 信使被杀,通讯故障、信息丢失; 信使被间谍替换,通讯被中间人攻击,攻击者在恶意伪造信息和劫持通讯。 拜占庭问题 以及容错算法概述分布式共识问题,是分布式系统领域最复杂的**分区容错一致性模型的**情景化描述 问题 它描述了如何在存在恶意行为(如消息篡改或伪造)的情况下使分布式系统达成一致 将军可能是叛徒,信使也可能是叛徒 口信消息型解决方案(A solution with oral message)有m个将军叛变,要有3m+1个将军才可以实现最终达成一致。 从另外一个角度理解:n 位将军,最多能容忍 (n - 1) / 3 位叛将 原则:副官相互交流时候,少数服从多数 步骤: 1。第一轮**指挥官先发送,不管指挥官是不是叛徒,不是...
2026-04-09
快速排序
题目连接: 912. 排序数组 代码 (三路快排)1234567891011121314151617181920212223242526272829303132333435class Solution: def sortArray(self, nums: List[int]) -> List[int]: self.quick_sort(nums, 0, len(nums) - 1) return nums def quick_sort(self, nums: List[int], left: int, right: int) -> None: if left >= right: return le, gt = self.partition(nums, left, right) self.quick_sort(nums, left, le - 1) self.quick_sort(nums, gt, right) def partit...
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
