数据结构与算法

037插入排序 - 整理扑克牌的算法

插入排序 - 整理扑克牌的算法 037插入排序:你手中的算法 📰 5W1H 发明者故事 Who(何人)- 发明者是谁?发明者:无单一发明者——插入排序是人类整理物品的自然直觉的算法化 背景:插入排序不像快速排序那样有明确的发明者和发明年份。它是人类直觉的形式化:当你抓一手扑克

餐饮 SaaS 优惠券系统架构演进(十三)券模板、发放批次与用户券数据模型:不可变快照、版本演进、状态归档与冷热分层

优惠券系统的数据难题并不只是表多,而是“今天改配置,昨天发的券会不会跟着变”。本篇用一次模板原地修改导致历史券门槛、有效期和退券规则漂移的脱敏事故,拆解不可变版本、批次固定、实例快照、迁移回放与冷热归档。Immutable VersionIssuance BatchSnapshot HashRCA / Postmortem结论先行:模板负责表

LeetCode 495: 提莫攻击 (模拟) —— 题解

  👋 欢迎阅读🎯 欢迎来到「提莫攻击」题解之旅! 本文将带你从"计算英雄被连续攻击后的总中毒时间"这一直观场景出发,深入理解区间合并 + 贪心累加的巧妙运用,并掌握如何比较相邻攻击间隔与中毒时长来累加不重叠的总时长。在开始之前,建议你先: 了解题目背景:这

LeetCode 6: Z 字形变换 (模拟) —— 题解

  👋 欢迎阅读🎯 欢迎来到「Z 字形变换」题解之旅! 本文将带你从"把字符串按 Z 字形排好后逐行读出"这一直观场景出发,深入理解周期性规律的巧妙运用,并掌握如何用公差 d = 2·numRows - 2 直接定位每行字符来在 O(n) 内完成变换。在开始之前,建议你先:

数据结构之排序算法(中):冒泡排序与快速排序,从相邻交换到工程级优化

一. 冒泡排序:每一趟确定一个最大值1. 单趟冒泡在做什么?从左向右比较每一对相邻元素。如果前一个元素大于后一个元素,说明这两个元素构成逆序对,就交换它们:若 a[i - 1] > a[i],交换 a[i - 1] 与 a[i]。一趟扫描结束后,当前未排序区间中的最大元素会移动到最右端,就像气泡

算法服务化改造:如何给核心算法建“净化机房”实现隔离

1. 为什么要给核心算法修一座“净化机房” 我先说一个特别常见的场景。很多团队早期做业务时,算法逻辑就是直接写在业务项目里的:用户请求进来,Controller 调 Service,Service 里嵌着十几个 if-else 或者一段模型预测代码,特征在这算、模型在那跑、结果直接拼进业务结构体返回。没错,

LeetCode 974:和可被 K 整除的子数组(前缀和) —— 题解

  👋 欢迎阅读🎯 欢迎来到「和可被 K 整除的子数组」题解之旅! 本文将带你从"数一数有多少段连续数字的和能被 K 整除"这一直观场景出发,深入理解前缀和 + 同余计数的巧妙运用,并掌握如何用修正后的余数做哈希计数来在 O(n) 内统计全部子数组。在开始之前,建议你先:

【数据结构 -- 栈和队列】一个偏爱后来之人,一个恪守先来后到

欢迎阅读本篇学习笔记。 本篇作为个人计算机专业的学习记录,这里将系统梳理栈和队列的相关知识点,从基础概念到代码实现逐步展开,便于后续的复习巩固。如有不足,欢迎大家在评论区交流指正,感谢大家的阅读与支持!栈栈的概念与结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行