自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 收藏
  • 关注

原创 620. 有趣的电影 - 力扣(LeetCode)

SQL查询摘要 该查询从cinema表中筛选满足两个条件的记录: ID为奇数(id%2=1) 描述不为"boring"(description!='boring') 查询结果包含id、movie、description和rating字段,并按rating降序排列。这种查询常用于筛选特定类型电影并按评分排序的场景。

2026-04-03 19:24:46 35

原创 647. 回文子串 - 力扣(LeetCode)

本文介绍了使用Manacher算法计算字符串中所有回文子串数量的方法。首先对原始字符串进行预处理,插入特殊字符以统一处理奇偶长度回文串。算法通过维护当前最右回文边界和中心点,利用对称性快速初始化回文半径,然后进行中心扩展来获取最大回文半径。最终统计所有中心点的回文半径,通过(p[i]+1)//2公式计算每个中心对应的回文子串数并累加。该算法的时间复杂度为O(n),空间复杂度为O(n),是解决回文子串计数问题的高效方案。

2026-04-03 13:21:55 19

原创 128. 最长连续序列 - 力扣(LeetCode)

该代码实现了一个寻找最长连续序列长度的算法。通过将输入数组转换为集合,遍历每个元素时检查其前驱是否存在,若不存在则向后查找连续序列,记录最大长度。时间复杂度为O(n),空间复杂度为O(n)。核心思想是利用集合快速查询的特性,避免重复计算。

2026-04-03 12:48:47 131

原创 136. 只出现一次的数字 - 力扣(LeetCode)

《异或运算求解唯一数字问题》摘要: 本文介绍了一种使用异或运算高效查找数组中唯一出现数字的算法。算法核心思想是利用异或运算的特性:任何数与0异或等于自身,相同数异或结果为0。通过遍历数组并对所有元素进行异或运算,最终结果即为唯一出现的数字。该方法时间复杂度O(n),空间复杂度O(1),是解决此类问题的经典方案。代码示例展示了简洁的Python实现,仅需5行核心逻辑即可完成任务。

2026-03-31 18:47:52 32

原创 139. 单词拆分 - 力扣(LeetCode)

这篇文章解析了动态规划解决字符串拆分问题的算法。通过定义dp[i]表示子串s[i:]能否被字典拆分,从右向左遍历字符串。初始化时dp[len(s)]=True作为边界条件。对于每个位置i,尝试匹配字典中的单词,若匹配则dp[i]继承dp[i+len(w)]的值。以"leetcode"为例,当i=4匹配"code"时dp[4]=True,i=0匹配"leet"时dp[0]=dp[4]=True,最终返回True表示可以拆分。该算法通过动态规划有效解决

2026-03-28 16:07:26 39

原创 142. 环形链表 II - 力扣(LeetCode)

摘要 该代码实现了一个检测链表环路的算法。通过使用哈希集合存储已访问的节点,遍历链表时检查当前节点是否存在于集合中,若存在则返回该节点(环的起点),否则将节点加入集合并继续遍历。若遍历结束未发现重复节点,则返回None表示无环。算法时间复杂度为O(n),空间复杂度为O(n)。

2026-03-26 20:48:00 150

原创 141. 环形链表 - 力扣(LeetCode)

该代码实现了一个检测链表是否存在环的算法。使用哈希集合存储已访问的节点,遍历链表时检查当前节点是否存在于集合中。若存在则判定有环,否则将节点加入集合并继续遍历,直至链表结束返回无环。时间复杂度O(n),空间复杂度O(n)。

2026-03-26 20:46:17 34

原创 Ubuntu 服务器之间互传文件夹

摘要:本文介绍使用rsync命令实现本地与远端服务器之间的文件同步。通过"-avz"参数启用归档模式、压缩传输和保留文件属性,"--progress"显示传输进度。命令格式分别为:本地到远端传输为rsync -avz --progress /local/dir/ user@ip:/remote/dir/,远端到本地同步为rsync -avz --progress user@ip:/remote/dir/ /local/dir/。注意目录路径结尾的"/&quo

2026-03-18 14:40:12 24

原创 Ubuntu tmux 会话

📌 Tmux 使用速查指南 1️⃣ 创建会话:tmux new -s build 后直接运行程序(如 python train.py) 2️⃣ 挂起到后台:按 Ctrl+B → D,显示 [detached] 即成功 3️⃣ 恢复会话:tmux attach -t build 4️⃣ 查看会话:tmux ls 5️⃣ 关闭会话:exit 或 tmux kill-session -t build 🔧 实用技巧: 横向/纵向分屏:Ctrl+B + " 或 % 切换窗口:Ctrl+B + 方向键 ⚠

2026-03-17 22:41:06 38

原创 1934. 确认率 - 力扣(LeetCode)

该SQL查询计算每个用户的确认率。首先通过LEFT JOIN连接Signups和Confirmations表,确保所有注册用户都被包含。然后使用IF函数将confirmed动作转为1,其他为0,计算每个用户这些值的平均值,并四舍五入到两位小数。最后按用户ID分组显示结果。查询返回用户ID及其对应的确认率(0到1之间的数值)。

2026-03-06 15:04:31 32

原创 146. LRU 缓存 - 力扣(LeetCode)

本文实现了一个LRU缓存算法,通过双向链表和哈希表相结合的方式。初始时缓存为空,执行put(1,1)和put(2,2)后缓存为{1,2}。访问get(1)后1变为最近使用。当put(3,3)时因容量限制淘汰最久未使用的2。后续操作中,4替换1,最终缓存为{3,4}。该实现通过链表维护访问顺序,哈希表快速查找,在O(1)时间内完成get和put操作,完美演示了LRU缓存的工作机制。

2026-03-06 14:45:14 351

原创 SQL中,防止除0错误

NULLIF(x,y)是SQL函数,当x等于y时返回NULL,否则返回x。例如表达式100/NULLIF(CAST(b.zgzs AS DOUBLE),0)可避免除零错误:若zgzs为0则返回NULL,否则进行除法运算。该函数常用于数据转换和异常值处理。

2026-02-10 14:36:53 265

原创 SQL 中的 WITH ... AS ...

SQL中的WITH...AS...语法用于定义公用表表达式(CTE),它能将复杂查询分解为更清晰、可读性更强的逻辑块。CTE的基本语法是为临时结果集命名,包含一个SELECT子查询,仅在当前语句有效。主要优势包括提高查询可读性、避免重复子查询和支持递归查询。递归CTE特别适用于处理层级结构数据,语法包含锚点成员和递归成员两部分。不同数据库对CTE的支持程度不同,使用时需注意语法差异。相比子查询和临时表,CTE在可读性、作用域和递归支持方面表现更优,是现代SQL开发的重要技能。

2026-02-03 22:48:59 413

原创 570. 至少有5名直接下属的经理 - 力扣(LeetCode)

该SQL查询用于找出至少有5名下属的经理姓名。通过自连接Employee表(e1代表经理,e2代表下属),使用WHERE条件e1.id=e2.managerId建立关联关系。然后按经理ID和姓名分组,并用HAVING COUNT(e2.id)>=5筛选出下属数≥5的经理。最终返回符合条件的经理姓名列表。

2026-02-02 15:39:20 331

原创 1280. 学生们参加各科测试的次数 - 力扣(LeetCode)

这篇SQL查询用于统计每个学生在各科目上的考试次数,包括未参加考试的情况。主要步骤:1)通过CROSS JOIN生成所有学生和科目的组合;2)用LEFT JOIN关联考试记录;3)COUNT(e.subject_name)统计实际考试次数(NULL值不计);4)按学生ID和科目分组;5)按学生ID和科目名称排序输出结果。关键点在于使用CROSS JOIN确保覆盖所有组合,LEFT JOIN保留无考试记录,以及COUNT(e.subject_name)正确统计考试次数。

2026-02-02 14:32:44 160

原创 577. 员工奖金 - 力扣(LeetCode)

摘要 该SQL查询从Employee表中获取员工姓名和对应的奖金信息。通过左连接将Employee表与Bonus表关联,筛选出奖金小于1000或没有奖金的员工记录。查询结果包含两个字段:员工姓名(name)和奖金数额(bonus),其中奖金为NULL表示该员工没有奖金记录。

2026-02-02 13:59:07 212

原创 1661. 每台机器的进程平均运行时间 - 力扣(LeetCode)

该SQL查询计算每台机器的平均处理时间。通过连接Activity表的开始(s)和结束(e)记录,匹配相同的machine_id和process_id,筛选start和end类型记录。计算每个进程的处理时间(e.timestamp-s.timestamp),按机器分组求平均值,并保留3位小数。最终输出machine_id及其对应的平均处理时间processing_time。

2026-02-01 21:56:09 151

原创 197. 上升的温度 - 力扣(LeetCode)

该SQL查询找出比前一天温度更高的天气记录ID。通过自连接Weather表,使用DATEDIFF函数确保日期相差1天(w1.recordDate = w2.recordDate +1天),并筛选出w1温度高于w2的记录。DATEDIFF返回两个日期的天数差,正数表示date1在date2之后。查询结果仅返回满足条件的记录ID。

2026-01-24 21:16:12 681

原创 如何解决Ubuntu中使用系统pip报错的问题,error: externally-managed-environment

推荐使用pipx安装gdown工具,这是最干净省事的方案。首先通过apt安装pipx并配置环境变量,然后直接用pipx安装gdown。这种方法不会污染系统Python环境,也不会遇到externally-managed-environment报错问题,是官方推荐的命令行工具安装方式。安装完成后建议重启终端或执行source命令使配置生效。

2026-01-22 19:05:03 122

原创 1581. 进店却未进行过交易的顾客 - 力扣(LeetCode)

这篇SQL查询用于统计每个顾客没有完成交易的访问次数。查询步骤:1) 通过LEFT JOIN保留Visits表所有记录;2) 用WHERE过滤出Transactions表中无匹配的记录;3) 按customer_id分组;4) 统计每组记录数作为count_no_trans。最终输出顾客ID及其未交易访问次数。

2026-01-21 16:18:05 640

原创 1068. 产品销售分析 I - 力扣(LeetCode)

SQL连接查询方法比较 本文介绍了两种SQL连接查询方法:隐式连接(通过WHERE子句)和显式INNER JOIN。两种方法都能实现从Sales和Product表中查询产品名称、年份和价格信息,连接条件均为product_id字段相等。结果显示两种方法在功能上等价,但显式JOIN语法更清晰易读,是现代SQL推荐写法。

2026-01-21 13:09:39 37

原创 1378. 使用唯一标识码替换员工ID - 力扣(LeetCode)

该SQL查询执行左连接操作,以Employees表为主表,关联EmployeeUNI表。通过id字段匹配,查询每个员工的unique_id和name。若EmployeeUNI中存在匹配记录则显示unique_id,否则显示NULL。结果包含所有员工记录,确保没有员工数据丢失。查询最终返回两列:unique_id和name。

2026-01-21 12:52:13 386

原创 584. 寻找用户推荐人 - 力扣(LeetCode)

摘要:该SQL查询从customer表中选择name列,筛选条件为referee_id不等于2或referee_id为空的记录。查询结果会返回所有未被ID为2的推荐人推荐,或者没有推荐人的客户姓名。这是通过WHERE子句中的!=2和IS NULL条件组合实现的,使用OR运算符确保满足任一条件即可被选中。

2026-01-20 18:58:31 50

原创 1683. 无效的推文 - 力扣(LeetCode)

文章摘要:该SQL查询用于筛选出内容长度超过15个字符的推文ID。通过CHAR_LENGTH(content)>15条件,从Tweets表中选取符合条件的记录,仅返回tweet_id字段。这是处理文本长度筛选的基本SQL操作示例。

2026-01-20 18:57:17 45

原创 1148. 文章浏览 I - 力扣(LeetCode)

题目要求找出既是作者又是读者的用户ID,并按升序排列。SQL查询步骤如下: 从Views表筛选author_id等于viewer_id的记录 使用DISTINCT去重 将结果列命名为id 按id升序(ASC)排序 最终返回满足条件的唯一作者ID列表,并按从小到大顺序排列。

2026-01-20 18:55:51 55

原创 595. 大的国家 - 力扣(LeetCode)

该SQL查询从World表中选择满足面积≥300万或人口≥2500万的国家的名称、人口和面积字段。查询条件使用OR逻辑运算符连接两个筛选条件,返回满足任一条件的所有记录。结果将包含符合面积或人口要求的国家的名称、人口数量和面积数据。

2026-01-20 18:54:25 51

原创 1757. 可回收且低脂的产品 - 力扣(LeetCode)

题目要求筛选出同时满足low_fats='Y'和recyclable='Y'的产品ID。 SQL查询解析: 从Products表中选择数据 筛选条件:low_fats和recyclable字段都为'Y' 返回符合条件的product_id字段 执行结果将返回所有既低脂又可回收的产品编号。 (字数:99字)

2026-01-20 18:52:00 37

原创 148. 排序链表 - 力扣(LeetCode)

摘要:本文介绍了两种链表排序算法。暴力算法通过提取节点值排序后重建链表,时间复杂度O(nlogn),空间复杂度O(n)。归并算法采用分治策略:1)递归分割链表至单个节点;2)合并有序子链表。关键函数包括getMid(快慢指针找中点)和merge(合并有序链表),时间复杂度O(nlogn),空间复杂度O(logn)。归并算法更高效,符合题目进阶要求。

2026-01-19 17:36:01 383

原创 Ubuntu 系统,防止运行大项目的时候 SSH 突然断开

本文介绍了使用tmux工具在Linux服务器上保持后台任务持续运行的方法。主要内容包括:1)安装tmux;2)创建新会话并运行脚本;3)分离会话保持程序运行;4)重新连接查看进度。该方法支持实时查看输出和多窗口操作,但需注意服务器重启会导致会话丢失。适用于需要长时间运行的交互式任务管理。

2026-01-19 17:26:56 570

原创 152. 乘积最大子数组 - 力扣(LeetCode)

本文介绍了一个计算数组中最大乘积的Python算法。该算法首先初始化最大值为数组元素最大值,然后维护当前最小和最大乘积值。遍历数组时,遇到0则重置乘积值,否则动态更新当前最小和最大值。最终返回遍历过程中记录的最大乘积值。示例展示了算法对数组[-4,-3,-2]的处理过程,能有效处理负数相乘的情况。该解法时间复杂度为O(n),空间复杂度为O(1),高效解决了最大乘积子数组问题。

2026-01-18 22:25:32 75

原创 155. 最小栈 - 力扣(LeetCode)

本文实现了一个最小栈(MinStack)数据结构,支持常规栈操作并能高效获取最小值。该数据结构使用两个栈:主栈存储所有元素,辅助栈存储当前最小值。push操作时,主栈压入元素,辅助栈压入当前最小值;pop操作时同步弹出两个栈顶元素;top和getMin操作分别返回主栈顶和辅助栈顶。这种方法保证了所有操作的时间复杂度均为O(1),空间复杂度为O(n),适用于需要频繁获取最小值的场景。

2026-01-17 15:53:11 61

原创 238. 除了自身以外数组的乘积 - 力扣(LeetCode)

本文介绍了三种计算数组中除自身外其他元素乘积的方法。暴力法时间复杂度O(n²),不符合要求;左右乘积列表法通过预计算左右乘积数组将时间优化到O(n),但需额外空间;最优解在O(n)时间内仅使用常数空间,先从左到右计算累积乘积,再从右到左乘上右边累积值。三种方法逐步优化,最终实现了时间O(n)和空间O(1)的最优解。

2026-01-16 19:18:52 333

原创 169. 多数元素 - 力扣(LeetCode)

本文介绍了三种查找数组中出现次数超过一半的元素的方法。哈希表计数法(O(n)时间/空间复杂度)通过统计元素频率实现;排序法(O(nlogn)时间)利用排序后中位数特性;随机化方法(期望O(n)时间)通过概率采样验证候选元素。三种方法各具特点,适用于不同场景需求。

2026-01-13 13:42:33 89

原创 198. 打家劫舍 - 力扣(LeetCode)

本文介绍了一个解决"打家劫舍"问题的动态规划算法。该算法采用滚动数组思想,仅使用两个变量(rob1,rob2)记录前两个状态,空间复杂度为O(1)。通过遍历数组,在每个位置计算抢与不抢的最优解,时间复杂度为O(n)。以输入[2,7,9,3,1]为例,最终最优解为12(抢劫第1、3、5个房屋)。算法优势在于高效利用了最优子结构,确保每个决策都考虑所有可能性,同时极大优化了空间使用。

2026-01-12 14:42:09 274

原创 200. 岛屿数量 - 力扣(LeetCode)

本文介绍了两种解决岛屿数量问题的方法。解法一采用深度优先搜索(DFS),时间复杂度O(M×N),空间复杂度O(M×N),通过递归访问相邻陆地并标记为已访问。解法二使用广度优先搜索(BFS),时间复杂度同样为O(M×N),但空间复杂度优化为O(min(M,N)),利用队列处理相邻节点。两种方法的核心思想都是遍历网格,发现陆地时进行搜索并计数,同时将访问过的陆地标记为"0"以避免重复计算。

2026-01-12 13:50:23 339

原创 206. 反转链表 - 力扣(LeetCode)

摘要:本文展示了使用Python实现单链表反转的代码。定义了一个Solution类,其中reverseList方法通过迭代方式反转链表:保存当前节点的下一节点,反转指针方向,然后移动prev和cur指针直至遍历完整个链表。时间复杂度为O(n),空间复杂度为O(1)。

2026-01-11 20:21:39 343

原创 207. 课程表 - 力扣(LeetCode)

该代码实现了一个课程安排问题的解决方案,使用深度优先搜索(DFS)检测是否存在循环依赖。主要步骤包括:1)构建课程依赖图preMap;2)定义dfs函数检测循环,通过visitSet记录当前路径节点;3)遍历所有课程进行DFS检查。若发现循环则返回False,否则返回True。时间复杂度为O(V+E),空间复杂度为O(V),其中V为课程数,E为依赖关系数。

2026-01-11 20:04:09 541

原创 208. 实现 Trie (前缀树) - 力扣(LeetCode)

本文实现了一个Trie(字典树)数据结构,包含TrieNode和Trie两个类。TrieNode类表示树的节点,包含子节点字典和单词结束标志。Trie类提供三个核心方法:insert()用于插入单词,构建字典树;search()检查单词是否存在;startsWith()判断是否存在以给定前缀开头的单词。该实现通过逐字符遍历的方式高效处理字符串的存储和查询,适用于自动补全、拼写检查等场景。

2026-01-10 16:25:36 437

原创 226. 翻转二叉树 - 力扣(LeetCode)

本文介绍了两种翻转二叉树的方法:递归法和迭代法。递归法通过交换左右子树并递归处理子节点,时间复杂度O(n),空间复杂度O(h)。迭代法使用栈模拟递归过程,同样具有O(n)时间复杂度和O(h)空间复杂度。两种方法都能有效实现二叉树的翻转,递归法代码简洁,而迭代法避免了递归调用的系统开销。

2026-01-08 14:22:50 194

原创 739. 每日温度 - 力扣(LeetCode)

本文介绍了三种计算每日温度间隔的方法:1)暴力法(O(n²)时间,O(1)空间),通过双重循环比较;2)预处理逆序优化法(平均O(n)时间),从后向前跳跃比较;3)单调栈法(O(n)时间,O(n)空间),利用栈结构高效处理。第三种方法最优,每个元素只需处理一次。代码实现展示了各算法的Python解决方案,并附有详细注释说明执行过程。

2026-01-07 11:57:18 297

Rick-and-Morty第1季-台词本-表格版

Rick_and_Morty第1季_台词本_表格版

2024-12-30

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

2024-11-01

群晖使用frpc连接qbittorrent时会出现Unauthorized未授权的问题

群晖使用frpc连接qbittorrent时会出现Unauthorized未授权的问题

2024-10-13

frp内网穿透搭建-最佳解决方案

frp内网穿透搭建-最佳解决方案,试错了很多次,终于找到了最稳定的

2024-10-13

蓝桥杯python组省赛训练题 - 来源蓝桥杯官方训练题

这份训练题让我成功拿到了省二,还是可以的,推荐想考蓝桥杯的同学们看看

2024-10-10

群晖系统7.X 安装教程 - 图文指导(超详细)

一个电脑nas小白也会明白的教程

2024-10-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除