[LeetCode] 每日一题 2296. 设计一个文本编辑器
设计了一个带光标的文本编辑器,支持添加、删除文本以及移动光标操作。通过使用双向链表存储文本,光标操作高效且简洁。每个操作的时间复杂度较低,适合频繁的文本编辑需求
面试题学习笔记 | MySQL 事务基础:事务的实现与日志管理
1. MySQL 如何实现事务? MySQL 通过以下机制共同实现事务,确保事务的 ACID 特性(原子性、一致性、隔离性和持久性): 锁机制(如行锁、间隙锁等):控制并发修改,满足事务的隔离性 Redo Log(重做日志):记录事务修改数据的操作,用于在 MySQL 宕机后恢复数据,确保事务的持久
[LeetCode] 每日一题 1472. 设计浏览器历史记录
设计了一个简单的浏览器历史记录管理器,利用数组实现高效的前进和后退操作。通过维护当前页面的索引,优化了历史记录访问的效率,避免了链表遍历的性能瓶颈,最终实现了 O(1) 的时间复杂度操作
[LeetCode] 每日一题 2502. 设计内存分配器
题目链接 https://leetcode.cn/problems/design-memory-allocator 题目描述 给你一个整数 n ,表示下标从 0 开始的内存数组的大小。所有内存单元开始都是空闲
[LeetCode] 每日一题 1656. 设计有序流
题目链接 https://leetcode.cn/problems/design-an-ordered-stream 题目描述 有 n 个 (id, value) 对,其中 id 是 <
[LeetCode] 每日一题 1206. 设计跳表(非常实用的数据结构)
今天的题目要求设计一个跳表数据结构,支持搜索、插入和删除操作。通过引入多层链表,跳表能够将这些操作的时间复杂度降到 O(log(n))。在实现时,通过虚拟头节点来简化查找操作,确保各个操作的统一性。跳表是一种高效的数据结构,适用于大规模数据的查找和修改
面试题学习笔记 | MySQL 调优
本文探讨了 MySQL 索引的数量是否越多越好,分析了时间和空间的开销,并提供了创建索引时的最佳实践。通过 EXPLAIN 语句,读者可以有效分析查询性能,识别索引是否生效,并理解如何优化查询执行计划。此外,文章还提供了 MySQL SQL 调优的思路,包括合理设计索引、避免不必要的查询字段、遵循联合索引的最左前缀原则等策略,帮助提升数据库性能
[LeetCode] 每日一题 2506. 统计相似字符串对的数目
今天的题目要求我们统计由相同字符组成的字符串对的数目。通过将每个字符串的字符组成转换为二进制表示,并使用哈希表记录出现的字符组合,我们高效地统计了相似字符串对的数量,避免了 O(n^2) 的暴力解法
面试题学习笔记 | MySQL 索引使用
本篇博客深入分析了 MySQL 索引的使用,包括聚簇索引与非聚簇索引的区别,介绍了索引覆盖与回表查询的概念及其对查询性能的影响。通过 EXPLAIN 工具,读者可以判断查询是否有效利用了索引。同时,文章还探讨了索引失效的常见原因以及如何优化索引的建立,帮助提升 MySQL 查询效率
[LeetCode] 每日一题 2209. 用地毯覆盖后的最少白色砖块
今天的题目要求通过有限数量的地毯最小化未覆盖的白色砖块。我们采用动态规划来逐步计算每种情况下剩余的白色砖块数。最终结果为 dp[numCarpets][floor.length()],表示最优覆盖后的白色砖块数