- 博客(15)
- 收藏
- 关注
原创 小木的算法日记-线段树
你好,未来的算法大师!想象一下,你正在处理一个巨大的数据集,比如某个电商网站一整天的用户点击流。老板突然问你:“下午2点到3点之间,我们的总点击量是多少?” 几分钟后,他又问:“把10点到11点之间的数据,因为系统故障,全部乘以0.5,然后再告诉我下午的总点击量。”如果用普通的数组,每次查询都需要遍历,每次修改更是灾难。面对这种需求,我们该怎么办?频繁的区间查询和区间修改答案,就是我们今天的主角——。线段树 (Segment Tree)这篇文章将带你:直击痛点:理解普通数组在区间问题上的局限性。掌握神器:了
2025-06-09 11:23:35
1202
原创 小木的算法日记-二叉堆
恭喜你!你已经完成了从理论到实践的全面学习。知识点重要性关键描述优先级队列⭐⭐⭐⭐⭐二叉堆最核心的应用,实现动态数据集合中取最值。数组实现⭐⭐⭐⭐理解如何用数组下标计算父子关系,是实现堆的关键。堆排序⭐⭐⭐重要的排序思想,但实战中多用内置函数。堆的性质⭐⭐⭐大顶堆/小顶堆的定义,是所有操作的基础。核心操作⭐⭐⭐⭐push (swim) 和 (),复杂度均为。现在,你不仅知道了二叉堆是什么,更理解了它为何如此设计以及如何在实际中发挥巨大作用。
2025-06-09 10:20:15
684
原创 小木的机器学习日记-KNN算法实战
模型学完了,现在我们要用“模拟考卷”(X_test)来测试它,看看它的预测结果(y_predict)和“真实答案”(y_test)相差多少。你把“课本”(X_train)和“标准答案”(y_train)交给模型,它就会去学习其中的规律。观察原始的y向量,你会发现它是[0,0,...,0, 1,1,...,1, 2,2,...,2]这样。在本文中,我们会对关键的函数和概念进行星级评定,帮助你快速识别哪些是必须牢记的,哪些是了解即可。: 这是理解随机化核心思想的好方法,但在实战中,我们有更方便的“瑞士军刀”。
2025-06-08 17:49:38
732
原创 小木的算法日记-亲手揭秘 TreeMap/TreeSet 背后的魔法 —— 二叉搜索树
核心引擎:TreeMap 的高效和有序性源于其底层的二叉搜索树(BST)。性能关键:BST 的性能取决于其平衡性。理想情况下是 O(logN),最坏情况下是 O(N)。工业级方案:实际的 TreeMap 使用红黑树等自平衡结构来保证性能。独门绝技:通过维护 size 字段,可以高效实现 rank 和 select 等高级功能。工作中常用 TreeMap/TreeSet 功能星级排序。
2025-06-08 13:39:48
1232
原创 小木的算法日记-多叉树的递归/层序遍历
恭喜你,坚持看到了最后!从二叉到多叉:多叉树是二叉树的泛化,遍历逻辑从处理固定的 left/right 变成了 for 循环处理 children 列表。DFS (深度优先):使用递归,代码优雅,有前序和后序两个关键操作位置,适合“一条路走到黑”的场景。BFS (广度优先):使用队列,逐层扫描,适合寻找最短路径等场景。基础版:最简单,但无法获知深度。size 进阶版:巧妙地按层处理,能记录深度,是面试高频写法。State 终极版:将节点与状态(如深度)绑定,扩展性极强,是通向更高级算法的钥匙。
2025-06-07 17:57:07
900
原创 小木的算法日记-DFS和BFS的适用场景(深度和广度)
先介绍一下二叉树的这两个常见的算法,DFS算法(递归)以及BFS算法(层序)。DFS常用来进行穷举所有路径,而BFS算法常用来寻找最短路径。比如给你出个问题,让你求最短路径,那么接下来让我们看看用DFS算法与BFS算法求的区别在哪里?DFS递归遍历算法:(一条路走到黑,遍历完一个树枝再遍历另外一个树枝)BFS层序遍历算法--逐层扩散(搜完1层搜1层而不是像D那样搜完一个树枝再搜另一个)BFS相比于DFS更适合寻找。
2025-06-07 16:20:51
834
原创 小木的学习日记-SQL中分组与数据统计
比如你在A店铺,6月1日买了一个东西,然后第二次进行交易时6月5日又再该店铺有买了一个,则R时间间隔就是4天(5-1 哈哈哈)当你能用 5 行 SQL 算出客户的「R=7 天,F=15 次,M=8888 元」时,你已经超越了 80% 仅凭直觉做决策的运营者。在MYSQL数据库中,对于一个单元格有多个数据的列不能直接用SELECT取出其中所有的元素。假设你是电商运营,面对 10 万条订单数据,如何快速区分「高价值客户」和「沉睡客户」?(用「错误案例 + 修正方案」强化记忆,符合《原则》的复盘思维)
2025-06-04 21:15:20
716
原创 小木的学习日记-SQL函数-时间函数与字符串函数
一 NOW() 用于SELECT二 TIMESTAMPDIFF() 用于SELECT三 CONCAT() 用于SELECT作用:把多个列合并成一个列(一个函数,作用是将多个字符串连接为一个字符串。四 SUBSTR -一般用于WHERE也是筛选作用所以与WHERE放在一起比如比如举一个简单的例子从invoice表中查找到运单前两个字母为SN(顺南)的运单总价,并重命名为订单总价。那SUBSTR是不是只能再WHERE之后呢?当然不是,其只是一个普遍规律而已。
2025-06-03 15:26:33
648
原创 小木的学习日记-SQL函数-聚合函数
无论是统计报表、商业分析还是数据清洗,COUNT、MAX、SUM等聚合函数都是高频使用的核心工具。本文将通过系统化的讲解,结合执行顺序解析与实战案例,帮助你彻底掌握 SQL 聚合函数的使用精髓。注意:AVG 仅计算非 NULL 值,若整列全为 NULL 则返回 NULL。统计符合条件的行数量,根据参数不同分为三种模式:。3.3 SUM/AVG:从总量到均值的分析利器。3.1 COUNT 函数:数据统计的多面手。四、执行顺序:决定结果的隐形规则。三、核心函数详解:从语法到本质。
2025-06-03 10:49:42
1039
原创 小木的学习日记——SQL多条件筛选
LIKE 相当于是二次筛选(WHERE是一漏斗筛选出了一部分,那LIKE就是在WHERE上的基础上再次进行筛选)比如举一个十分简单的例子2_ 下划线通配符的作用也可将"_"视x比如WHERE name LIKE "_ary"的含义就是在name这一列寻找后三位是ary的名字AND OR NOT 条件说明:举一个例子表为orders,列为order_time我想要统计一下2019-11-01到2019-11-12的时间,我应该如何进行ORIN。
2025-06-01 14:44:15
735
原创 小木的学习日记-SQL按条件筛选数据
核心能力:筛选(WHERE)、排序(ORDER BY)、限制(LIMIT)的组合使用。避坑指南时间数据加引号,区分NULL与0。牢记子句执行顺序,避免WHERE中使用SELECT别名。实战价值:从电商折扣分析到用户画像筛选,WHERE是数据清洗和分析的第一步。
2025-05-31 13:35:50
530
原创 小木的学习日记-SQL数据排序与去重
排序又分为两种,由低到高与由高到底排序。而ORDER BY 便可以实现这个功能比如:查找orders(订单表)中的所有数据,并将查找结果按照total_price(订单价格)升序排列。这是ORDER BY total_price DESC;的结果--降序排列上面操作是针对单列进行排序操作,那如果是多列呢?--一个关键字,表明对要取的数据的数量进行限制。比如LIMIT 10 意思就是我只要10条数据就欧克了又比如LIMIT 10,3就是表示跳过前 10 个记录从第11个开始向后取 3 条数据。
2025-05-29 11:28:36
366
原创 小木的学习日记-SQL查询
草稿:比如这是一个brand表中brand_name的内容,如果我们要通过SQL获取这个内容那么如何写出相关代码呢?brand_name香奶奶雅诗绿黛绿蔻FROM brand;选择brand_name 从brand表中。看见了吗?类似于英语中的倒装句,先列(brand_name)后表(brand)。注意:1SELECT FROM的大小写无所谓但一般用大写,要查询的数据(表名、字段名等)使用小写。2注意FROM brand之后的封号,一定要记得加上那如果需要输出的结果是两列呢?
2025-05-28 12:40:27
649
原创 小木的算法日记-1
本人是一枚大学生,专业是大数据管理与应用,未来想成为一名NLP算法工程师或者数据挖掘师,在网上了解情况后遂学习算法,经历了大大小小的坑后在Github上找到了我的“救命恩人”-labuladong大佬,想学习算法的可以参考一下这位大佬的算法日记。我打算写一下我的算法日记来记录自己的学习生活以及自己的一些经验,希望能够给大家一些帮助,利他就是最好的利己。
2025-05-27 21:11:29
391
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人