自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(228)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode 238:除自身以外数组的乘积(Java实现)

通过两次遍历分别计算左右两侧的乘积,既避免了除法,又优化了空间复杂度。该方法适用于需要前后缀计算的场景(如“接雨水”问题)。关键在于分步拆解问题,复用结果数组减少空间占用。

2025-05-05 14:14:30 33

原创 原地轮转数组的两种高效实现详解

临时数组法优点:逻辑直观,代码简单。缺点:需额外空间存储k个元素。三次反转法优点:原地操作,空间最优。缺点:需熟悉反转逻辑,索引处理需谨慎。根据实际场景选择合适的方法,若内存允许且追求代码简洁性,可选用临时数组法;若需严格原地操作,三次反转法是更优选择。

2025-05-02 18:17:53 578

原创 Java实现区间合并算法详解

排序是核心:排序后,只需线性遍历即可合并相邻重叠区间。合并逻辑:比较当前区间与合并列表最后一个区间,动态更新结束点。Java类型转换:通过toArray指定返回数组类型,避免类型安全问题。扩展思考:如果输入区间已经按起始点排序,如何优化算法?此时时间复杂度可降至O(n)!

2025-05-02 17:02:29 397

原创 最大子数组和问题:两种Kadane算法实现对比与优化详解

算法选择:Kadane算法是解决最大子数组和问题的最优解实现差异显式条件分支更易理解算法本质Math.max实现更简洁优雅工程实践优先使用标准Math.max实现注意变量命名的语义化避免冗余的边界检查。

2025-05-02 16:19:52 476

原创 LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用

前缀和与哈希表的结合是解决子数组和问题的经典方法,适用于大规模数据。初始化哈希表为{0:1}是关键,确保能正确统计到从数组起始位置开始的子数组。通过空间换时间,将时间复杂度从 O(n²) 优化到 O(n)。

2025-05-02 15:12:23 468

原创 LeetCode路径总和系列问题解析:I、II、III的解决方案与优化

问题核心方法时间复杂度空间复杂度关键难点路径总和 I递归遍历O(n)O(n)终止条件判断路径总和 II回溯+路径记录O(n)O(n²)深拷贝与回溯逻辑路径总和 III前缀和+哈希表O(n)O(n)前缀和统计与回溯维护路径总和I:基础递归应用,理解终止条件与递归分解。路径总和II:掌握回溯法维护路径状态,注意深拷贝避免引用问题。路径总和III:前缀和优化是核心,通过空间换时间避免重复计算。

2025-04-30 16:43:26 647

原创 从遍历序列构造二叉树:前序+中序与中序+后序的递归解法详解

核心共性通过根节点分割中序序列,确定左右子树的区间。递归处理左右子树时,需精准计算前序或后序序列的子树区间。关键区别根节点位置:前序序列首元素 vs. 后序序列末元素。区间计算:前序需跳过根节点后分割,后序需排除末元素后分割。扩展思考如何验证构建的二叉树是否正确?重新生成前序/中序/后序遍历序列,与原输入比对。如果遍历序列中存在重复值,上述方法是否有效?无效,因为哈希表无法唯一确定根节点位置。题目链接105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树。

2025-04-29 18:50:15 737

原创 如何将二叉树展开为链表?两种Java实现方法对比

通过修改指针实现原地展开,无需额外空间。类似Morris遍历,时间复杂度O(n),空间复杂度O(1)。:显式存储前序遍历结果,再重建链表。时间复杂度O(n),空间复杂度O(n)。的顺序展开为一个单链表。给定一棵二叉树的根节点 `root``,要求将其按。

2025-04-29 16:57:47 667

原创 链表反转操作经典问题详解

反转链表:迭代法(O(1) 空间)和递归法(O(n) 空间)各有适用场景。回文链表:结合快慢指针和反转链表,实现 O(1) 空间复杂度。区间反转:通过哑节点和精准定位,高效处理子链表反转。核心技巧双指针法(快慢指针、前后指针)哑节点简化边界条件递归与回溯的灵活应用通过练习这些经典问题,可以深入掌握链表操作的核心逻辑!

2025-04-29 16:00:10 721

原创 链表相交节点与最小索引和问题的解法详解

相交链表问题:通过双指针法消除长度差异,实现高效相遇检测。最小索引和问题:利用哈希表快速查找共同元素,动态维护最小索引和。核心思想:双指针法适用于链表遍历问题,哈希表适用于快速查找和索引维护。

2025-04-29 12:34:35 714

原创 二叉搜索树中第 K 小的元素:两种方法详解(递归与迭代)

特性递归实现迭代实现代码简洁性更简洁,无需显式栈操作需要手动维护栈结构空间风险树高度较大时可能栈溢出显式栈更稳定适用场景树高度较小或 k 较小树高度较大或需要避免递归风险推荐选择若对代码简洁性要求高且树高度可控,优先选择递归。若树高度较大或需要严格避免栈溢出风险,选择迭代实现。

2025-04-29 08:00:00 515

原创 将有序数组转换为高度平衡二叉搜索树 | 详解与Java实现

核心思路:分治法选择中间节点递归构建BST。关键技巧:使用避免溢出。性能保证:时间复杂度 O(n),空间复杂度 O(log n)。适用场景:有序数组转平衡BST、二分查找相关算法。通过这种方法,可以高效地将有序数组转换为高度平衡的二叉搜索树,满足算法题和实际工程的需求。

2025-04-28 17:17:02 1215

原创 如何验证二叉搜索树(BST):Java实现详解

递归上下界:直接通过范围约束检查,适合小规模数据。中序遍历迭代:避免递归栈溢出,适合大规模或深度较大的树。中序遍历递归:代码简洁,但需注意实例变量管理。根据实际场景选择合适的方法,确保高效性和代码可维护性。

2025-04-28 16:14:03 666

原创 二叉树最近公共祖先问题的Java实现与优化

基础递归:简单直观,适合理解问题本质。优化方法提前终止:减少冗余遍历,提升效率。布尔返回:简化逻辑,降低内存开销。迭代法:避免栈溢出,适用于深度较大的树。实际应用:根据树的结构选择合适方法,平衡树优先用递归,深树用迭代法。通过以上方法,可以灵活应对不同场景下的 LCA 问题,提升代码的效率和鲁棒性。

2025-04-28 12:01:04 900

原创 二叉树的右视图:BFS与DFS方法详解

二叉树的右视图:BFS与DFS方法详解

2025-04-28 11:53:54 775

原创 二叉树层序遍历技术解析与面试指南

层序遍历(Level Order Traversal)是一种**广度优先搜索(BFS)**算法,按层级从上到下、从左到右访问二叉树节点。通过掌握层序遍历的核心原理与扩展应用,可以更从容地应对树结构相关的问题,展现系统级的算法设计能力。

2025-04-22 22:59:52 824

原创 Java队列(Queue)核心操作与最佳实践:深入解析与面试指南

队列(Queue)是计算机科学中最重要的线性数据结构之一,遵循**先进先出(FIFO)**原则。在Java生态中,队列不仅是算法题(如BFS、缓存管理)的核心工具,更是高并发系统、消息中间件等企业级架构的基石。本文将深入剖析Java队列的实现原理、核心API、性能差异及实战技巧,助力开发者掌握面试高频考点,写出高性能队列代码。核心原则:优先使用ArrayDeque,需要双端操作时选择LinkedListAPI规范:始终使用系列方法扩展方向研究阻塞队列(BlockingQueue)实现原理。

2025-04-22 22:51:32 609

原创 面试常问的扫码登录场景题:从原理到实现全解析

扫码登录的面试回答需抓住流程拆解、状态机设计、安全防护三大核心,结合Redis、JWT等关键词展示技术深度。代码健壮性:处理Token过期、重复提交等边界场景;可观测性:监控扫码成功率、延迟等指标;扩展性:设计支持横向扩展的Token管理方案。更多面试技术解析,欢迎访问作者主页查看系列文章。

2025-04-17 23:27:15 795

原创 滑动窗口+哈希表:最长无重复子串的最优解与高频面试题解析

在 LeetCode 和各大厂算法面试中,“寻找字符串中最长无重复字符子串”是一道经典高频题。它不仅考察对**滑动窗口**和**哈希表**的灵活运用,还能延伸出对时间复杂度优化、边界条件处理的深度思考。本文将通过两种 Java 实现(**求长度**和**求子串本身**),结合代码逐行解析

2025-04-17 08:30:00 639

原创 MySQL 中 `${}` 和 `#{}` 占位符详解及面试高频考点

在 MySQL 和 MyBatis 等框架中,${}和#{}是动态 SQL 中常用的占位符。它们的核心差异在于预编译机制和安全性,正确使用二者是后端开发的基本功,也是面试中的高频考点。本文将从原理、场景、安全性及面试题四方面深入解析。#{}用于替换值类型(如 WHERE 条件值、INSERT 字段值),通过预编译,防止 SQL 注入。${}用于替换标识符(如表名、列名、ORDER BY 子句),直接拼接字符串,需手动校验安全性。场景占位符示例WHERE 条件值#{}动态表名/列名${}

2025-04-16 19:29:09 949

原创 Java字符串操作全解析:语法、示例与应用场景

在Java算法题和日常开发中,字符串处理是必备的核心技能。本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字符串处理技巧,轻松应对笔试面试高频题目。

2025-04-16 09:45:00 4693 8

原创 经典算法问题解析:两数之和与三数之和的Java实现

在算法面试和编程练习中,**两数之和(Two Sum)**和**三数之和(3Sum)**是两个经典的数组处理问题。这两个问题不仅是检验基础算法能力的试金石,也是理解高效搜索技巧的重要案例。本文将通过Java代码实现这两个问题,并深入解析其优化思路。

2025-04-15 21:52:47 1045

原创 盛水最多的容器问题详解:双指针法与暴力法的对比与实现

盛水最多的容器(Container With Most Water)是LeetCode上一道经典的算法题,考察对数组和双指针技巧的应用。本文将详细分析问题的核心思路,探讨暴力法和双指针法两种实现方法,并对比它们的性能差异。通过代码实现和复杂度分析,帮助读者深入理解如何高效解决此类问题。

2025-04-15 20:34:24 840

原创 Java 分布式锁实现全解析:原理、代码、对比与面试指南

在分布式系统中,多个服务实例可能同时访问共享资源(如数据库、缓存、文件等)。分布式锁的核心目标是实现跨进程的互斥访问

2025-04-15 20:06:59 930

原创 Java开发者必备:分布式系统核心概念与场景化解决方案(附完整Demo)

分布式系统是由一组通过网络互联的独立计算机节点(物理或虚拟)协同工作的系统。这些节点通过消息传递机制进行通信与协调,共同完成单一计算机无法实现的大规模计算任务或数据存储需求。通过协作克服单机限制,通过冗余保障系统可靠性。

2025-04-15 20:04:55 1067

原创 从暴力到动态规划再到双指针:使用 Java 探索接雨水问题的不同解法

在本文中,我们将探讨经典的接雨水问题,并提供多种解题思路和方法。通过逐步深入的方式,将了解到如何使用暴力法、动态规划法以及双指针法解决这一问题,并对它们进行性能对比。

2025-04-14 21:22:47 789

原创 Java数组初始化全解析:方式、场景与最佳实践

数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点。本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱并提升代码质量。

2025-04-14 20:55:43 1088

原创 Java集合框架详解:核心类、使用场景与最佳实践

Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作数据集合的核心工具

2025-04-12 17:46:52 1047

原创 用Java实现O(n)时间复杂度查找最长连续序列

通过哈希集合和仅处理连续序列起点,算法在 O(n) 时间内高效解决问题。核心在于避免重复遍历和冗余计算

2025-04-12 17:02:23 845

原创 Java 列表初始化全解析:7种方式详解与最佳实践

在 Java 开发中,列表(`List`)是最常用的数据结构之一,而列表的初始化方式直接影响代码的简洁性、性能和可维护性。本文全面总结 Java 中列表初始化的 **7 种常见方法**,分析其适用场景、优缺点及注意事项,并给出对比总结与最佳实践建议。

2025-04-09 21:58:47 948

原创 Redis学习(13)| Redisson 看门狗机制深度解析

Redisson 是一个用于 Redis 的 Java 客户端,它提供了丰富的功能来简化分布式应用的开发。其中,看门狗(Watchdog)机制是 Redisson 为了解决分布式锁过期问题而设计的一个重要特性。本文将深入探讨 Redisson 看门狗的工作原理、应用场景以及最佳实践,并提供代码示例帮助读者更好地理解和使用这一特性。

2024-12-11 21:35:08 1727

原创 Java 小抄|解析 JSON 并提取特定层级数据

在日常开发中,我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据,并通过流式处理提取特定层级的数据。我们将以一个具体的例子来说明这一过程。首先,我们需要定义一个 Java 类来表示预算条目。这里使用 Lombok 的@Data注解来简化类的编写

2024-12-11 21:31:52 840

原创 深入浅出:序列化与反序列化的全面解析

在软件开发中,**序列化(Serialization)** 和 **反序列化(Deserialization)** 是两个非常重要的概念。它们涉及到数据的转换、传输和存储。本文将通过通俗易懂的语言和实际代码示例,帮助读者理解这两个过程,并探讨如何在不同的编程语言和应用场景中实现它们。

2024-12-09 20:36:47 2295

原创 MySQL|通过JSON_UNQUOTE实现MySQL中JSON数据的干净提取

`JSON_UNQUOTE()` 是 MySQL 中用于处理 JSON 数据类型的一个函数。它的主要作用是从 JSON 字符串中移除最外层的引号,这对于从 JSON 对象或数组中提取字符串值特别有用。

2024-12-09 20:21:44 607

原创 Java 小抄|利用 `retainAll()` 方法实现集合间的交集

在Java编程语言中,`retainAll()` 方法是 `Collection` 接口提供的一个功能,用于从一个集合中移除那些不在另一个指定集合中的所有元素。简而言之,它实现了集合之间的交集操作。本文档将详细介绍 `retainAll()` 方法的使用方法、注意事项以及在后端开发面试中可能遇到的相关问题。

2024-12-02 21:43:38 643

原创 Apache Commons Chain 与 Spring Boot 整合:构建用户注册处理链

本文档旨在展示如何在 Spring Boot 应用中使用 Apache Commons Chain 来实现一个用户注册的处理链。我们将通过ChainBase和类来组织和管理多个处理步骤,并结合 Spring 的依赖注入和上下文管理功能,以实现一个灵活且可扩展的解决方案。为了在处理链中的每个命令之间传递和共享状态信息,我们需要创建一个继承自的自定义上下文类。这个类将包含所有与用户注册相关的属性。} }} }

2024-12-02 20:58:15 1345

原创 Hive | Hive 表如何查看所有分区

Apache Hive 是一个构建在 Hadoop 之上的数据仓库工具,它提供了 SQL 类似的查询语言(称为 HiveQL),使得用户能够更容易地进行大数据处理和分析。在 Hive 中,分区是一种优化查询性能的方法,通过将数据按照一个或多个列的值进行划分,可以显著减少查询时扫描的数据量。本文档将介绍如何在 Hive 中查看表的所有分区信息。通过上述命令,Hive 用户可以轻松地查看和管理表的分区信息,从而更好地利用分区来优化查询性能。

2024-11-26 22:25:57 2746

原创 正则|Pattern 和 Matcher 的使用与优化

在 Java 中,Pattern和Matcher是正则表达式处理的核心类。它们提供了强大的文本匹配和处理功能,广泛应用于各种文本解析和验证场景。本文将详细介绍Pattern和Matcher的使用场景、解决的问题、优缺点以及相关技术问题。Pattern类代表一个正则表达式的编译形式。它主要用于编译正则表达式,并生成一个Pattern对象,该对象可以用于创建Matcher对象来执行匹配操作。Pattern和Matcher。

2024-11-26 22:17:57 1072

原创 Spring Boot | 使用 `@Scheduled`: 定时任务的实现与优化

Scheduled是 Spring 框架提供的一个注解,用于在 Spring 管理的 Bean 中定义计划任务。它允许开发者在 Spring Boot 应用中执行周期性的后台任务,而无需使用外部任务调度器。@Scheduled注解支持多种参数来定义任务的执行规则。cron: 使用Cron表达式来定义任务的执行时间表。// 每日凌晨2点执行")fixedRate: 指定从上一次任务开始到下一次任务开始之间的时间间隔(单位为毫秒)。// 每隔5秒执行一次。

2024-09-23 21:24:43 2417 1

原创 MySQL | 使用 HAVING 子句进行高级数据筛选

SQL 中的HAVING子句用于从GROUP BY查询的结果中进一步筛选记录。当需要根据聚合函数的结果来过滤查询输出时,HAVING就变得非常有用。HAVING与WHERE类似,但WHERE子句是在分组前应用,而HAVING是在分组后应用。在 SQL 查询中,HAVING子句通常与GROUP BY子句一起使用。这里的value是一个具体的数值或表达式。

2024-09-23 21:12:52 935

三级数据库无纸化考试模拟软件.rar

一个计算机三级数据库的模拟软件,上传于此是为了个人备份

2019-08-29

空空如也

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

TA关注的人

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