- 博客(58)
- 收藏
- 关注
原创 MyBatis缓存详解:一级缓存、二级缓存与实战优化
摘要:本文深入解析MyBatis的两级缓存机制,包括一级缓存(SqlSession级别)和二级缓存(SqlSessionFactory级别)。详细介绍了缓存的配置方法、使用场景和失效条件,通过代码示例演示缓存效果。重点分析了高频查询数据的缓存适用性,以及增删改操作对缓存的清除机制。文章还对比了两级缓存的查询顺序,并给出生产环境下的最佳实践建议:一级缓存适合短会话重复查询,二级缓存需注意序列化要求,在分布式缓存环境下可考虑关闭二级缓存以避免混乱。
2025-12-27 22:45:20
920
原创 Maven 项目拆分与聚合实战:分层架构下的多模块开发
本文以"用户管理系统"为例,详细介绍了Maven多模块项目的开发实践。首先阐述了Maven坐标与依赖管理的核心概念,然后按照分层架构将项目拆分为pojo、dao、service和control四个模块,每个模块承担单一职责。文章详细展示了各模块的代码实现和pom.xml配置,包括实体类定义、数据库访问、业务逻辑处理和Servlet实现。最后总结了Maven多模块开发的优势:职责单一、复用性高、版本统一和构建高效。通过这种分层架构,开发者可以更好地组织大型Java项目,提高代码的可维护性和
2025-12-21 17:06:48
1026
原创 Java 二叉树实战:构建、遍历与查找的完整实现
本文基于Java实现了二叉树的核心操作,包括节点定义、构建、遍历和查找功能。二叉树节点包含左右子节点和数据域,构建时遵循"左小右大"规则插入。详细实现了三种深度优先遍历(先序、中序、后序)的递归算法,其中中序遍历可使数据有序输出。同时介绍了广度优先遍历思路,并提供了基于比较规则的查找方法。完整测试代码验证了各项功能,展示了二叉排序树的典型特性。本文内容为学习更复杂树结构(如平衡二叉树、红黑树)奠定了基础。
2025-12-17 19:38:31
876
原创 数据结构进阶:从链表到红黑树(二叉树、平衡树、红黑树核心解析)
本文分析了从链表到红黑树的演进过程,揭示数据结构优化的核心逻辑。链表线性结构导致查找性能O(n),二叉树通过分层存储优化至O(logn),但存在失衡风险。平衡二叉树(AVL)通过旋转保证严格平衡,而红黑树引入颜色规则降低旋转频率,成为工业级应用首选(如Java集合框架)。对比显示:红黑树在保证O(logn)时间复杂度的同时,插入删除性能更优。理解这些树结构原理对掌握数据库索引、高效算法等核心技术至关重要。
2025-12-15 00:12:48
1006
原创 Java Web 底层解析:Servlet 执行流程、Tomcat 工作原理与自定义 Tomcat 实现
本文深入解析JavaWeb底层逻辑,从Servlet执行流程、Tomcat工作原理到自定义简易Tomcat实现三个维度展开。Servlet作为核心组件,其生命周期由容器管理,通过继承HttpServlet实现业务逻辑;Tomcat作为Web容器,负责请求接收、解析和响应返回,I/O模型从BIO演进到NIO;最后通过基于Socket+反射+线程池实现简易Tomcat,演示请求处理全流程。掌握这些底层机制有助于深入理解JavaWeb框架原理,为分布式和微服务学习奠定基础。
2025-12-04 23:36:22
939
原创 Java Socket 网络编程实战:从基础通信到线程池优化
本文系统介绍了Java Socket网络编程的核心技术,从基础实现到性能优化逐步深入。首先讲解了Socket作为应用层与传输层接口的基本概念和TCP通信模型。随后通过单客户端示例展示ServerSocket和Socket的基础用法,并指出其单线程处理的局限性。接着引入多线程方案实现并发通信,最后通过线程池优化解决高并发场景下的资源管理问题。文章完整呈现了Socket通信从单线程到多线程再到线程池优化的演进路径,为网络编程学习提供了清晰的实践框架。核心在于通过线程复用和并发控制实现高效稳定的通信服务,为分布式
2025-12-03 20:07:28
1100
原创 Servlet 前后端交互实战(登录/注册案例)
本文介绍了JavaWeb中Servlet实现前后端交互的两种核心方式:1)Form表单同步提交,通过action属性指定Servlet路径,后端使用req.getParameter()获取参数;2)AJAX异步交互,使用jQuery简化代码,实现无刷新数据传输。通过登录/注册功能案例,详细展示了前端表单设计、后端Servlet处理逻辑及参数传递机制,并对比了两种交互方式的优缺点。文中还总结了关键知识点,包括表单元素命名规则、Servlet核心API以及项目部署方法,为JavaWeb开发提供了基础实践指导。
2025-12-02 18:12:59
1014
原创 MySQL 数据库进阶:SQL 数据操作与子查询
本文介绍了SQL中的子查询、数据添加、修改和删除操作。子查询是嵌套在主查询中的查询语句,可用于复杂条件筛选和多表关联。INSERT语句支持单行和多行数据添加,需注意字段与值的匹配。UPDATE语句用于修改数据,必须包含WHERE条件以避免误操作。DELETE、TRUNCATE和DROP分别用于删除记录、清空表和删除表结构,三者效率和功能各有差异。文章还强调了SQL操作的注意事项,包括子查询优化、数据约束检查以及修改删除前的验证建议。这些基础CRUD操作是数据库管理的核心内容,为后续进阶学习奠定基础。
2025-11-23 09:20:21
680
原创 MySQL 数据库进阶:SQL 查询语句全解析
本文介绍了MySQL数据库查询的核心操作:1.基础查询(SELECT)及字段选择;2.条件查询(WHERE)及常用运算符;3.模糊查询(LIKE)及通配符使用;4.聚合函数(SUM/AVG/MAX/MIN/COUNT)统计;5.分组查询(GROUP BY)实现分类统计;6.排序(ORDER BY)控制结果顺序;7.分页(LIMIT)实现数据分页展示;8.多表连接(JOIN)避免笛卡尔积。这些查询技巧覆盖了MySQL数据库查询的基本需求,为进一步学习子查询、存储过程等进阶内容奠定了基础。
2025-11-19 23:01:08
1635
1
原创 MySQL 数据库入门:E-R 图与表关系、约束详解
本文介绍了数据库系统的基础知识,包括数据库分类(关系型与非关系型)、E-R图的构成要素(实体、属性、关系)以及表关系的三种类型:一对一、一对多和多对多。重点讲解了MySQL的五种约束(主键、唯一、非空、默认和外键),这些约束机制保障了数据的完整性和准确性。文章还说明了Navicat作为数据库管理工具的作用。这些核心概念为MySQL数据库入门提供了基础框架,是后续学习SQL语句、索引等进阶内容的前提。
2025-11-18 22:15:37
1390
原创 Java 进阶:注解机制深度解析
本文系统介绍了Java注解(Annotation)的核心概念与应用。首先对比了注解与注释的本质区别:注释是为开发者解释代码,而注解会被程序解析并影响运行行为。接着详细阐述了Java注解的分类,包括内置注解(如@Override、@Deprecated)、元注解(如@Target、@Retention)以及自定义注解的定义方法。通过"模拟Servlet框架"的实战案例,展示了如何结合反射解析自定义注解实现动态逻辑。最后总结了注解在框架开发、代码生成等场景中的优缺点,强调其在Java进阶学习
2025-11-17 21:55:17
1282
原创 Java 实战:图书管理系统(ArrayList 应用)
本文介绍了一个基于Java的图书管理系统设计与实现。系统采用ArrayList存储图书对象,实现图书的增删查、统计与排序功能。核心功能包括:添加图书、按书名删除/查询图书、计算平均价格、按价格升序排序等。系统通过控制台菜单与用户交互,并处理各种边界情况。技术实现上使用ArrayList进行数据存储、自定义Book实体类封装数据、Collections.sort()实现排序。文章详细讲解了从需求分析、类设计到功能实现的完整过程,包含代码示例、核心技术解析和运行效果演示,并提出了模糊查询、去重添加等扩展优化方向
2025-11-16 11:30:51
801
原创 Java 实战:投票统计系统(HashMap 应用)
摘要:本文介绍了一个基于Java的投票统计系统实现。系统使用HashMap存储候选人姓名与得票数,支持通过控制台输入进行多次投票,并自动统计结果。核心功能包括:1) 动态添加候选人和更新票数;2) 输出所有候选人得票情况;3) 自动识别得票最高的候选人(含并列情况)。关键技术点包括HashMap的put/get操作、两次遍历查找最高票数,以及处理用户输入的优化措施。系统具有良好扩展性,可支持投票次数限制、防止重复投票等扩展功能,是HashMap在统计类场景的典型应用案例。
2025-11-16 10:47:21
1173
原创 Java 实战:去重与排序(HashSet+TreeSet 应用)
摘要:本文介绍了两种Java实现整数列表去重与排序的方案。方案1使用HashSet去重配合TreeSet自动排序,方案2采用HashSet去重后用Collections.sort()进行自定义排序。文章详细解析了HashSet的去重原理和TreeSet的排序机制,并提供了完整的代码实现及运行示例。这两种方案分别适用于不同的排序需求:TreeSet适合默认升序排序,Collections.sort()则支持自定义排序规则。通过这个项目实践,可以深入理解Java集合框架的去重和排序特性,为类似数据处理需求提供高
2025-11-15 12:00:00
763
原创 Java 实战:单词统计器(HashMap 应用)
本文介绍一个基于HashMap实现的健壮单词统计工具。该工具支持中英文混合文本输入,通过正则表达式分割单词,提供忽略大小写、过滤停用词等可配置功能。代码采用分层设计,核心统计类WordCounter与文本处理工具类TextUtils分离,增强了可扩展性。优化点包括使用getOrDefault简化计数逻辑、处理边界场景、支持自定义排序(升序/降序)。文章还演示了文件输入输出和自定义停用词等扩展功能,分析了HashMap的性能优势及使用注意事项。该项目展示了Java集合、文本处理和异常处理等核心技术的实际应用,
2025-11-14 13:41:31
827
原创 Java 实战:学生管理系统(ArrayList 应用)
摘要:本项目实现了一个基于控制台的学生管理系统,使用Java面向对象编程和ArrayList集合完成学生信息的增删查改、统计与排序功能。系统包含Student实体类封装学生信息,StudentManager类实现核心业务逻辑,采用Scanner进行控制台交互。关键技术包括:ArrayList的CRUD操作、Collections.sort()实现成绩降序排序、控制台输入处理等。项目体现了面向对象封装思想,通过实际案例掌握集合操作与业务逻辑的封装技巧,为Java开发打下基础。
2025-11-13 13:50:14
912
原创 Java 进阶:反射机制深度解析
本文介绍了Java反射机制的核心概念和应用。反射允许程序在运行时获取类的所有信息(变量、方法、构造器等)并动态操作类成员,是框架开发(如Spring、MyBatis)和动态代理的基础。文章详细阐述了反射原理(基于Class对象)、获取Class对象的三种方式(Class.forName()、类名.class、对象.getClass()),并通过代码示例演示了如何获取类的成员变量、方法和构造器信息。此外,还讲解了如何动态创建对象、调用方法和修改变量,最后分析了反射的优缺点及注意事项。反射虽然灵活但性能开销较大
2025-11-12 23:32:31
1453
原创 Java 进阶:IO 流与 Lambda 表达式深度解析
本文系统讲解了Java中的IO流和Lambda表达式两大核心技术。IO流部分详细介绍了字符流(Reader/Writer)和字节流(InputStream/OutputStream)的分类与用法,通过FileReader、FileWriter等实例演示了文本和二进制文件的读写操作。Lambda表达式部分阐述了函数式编程思想,对比传统实现、匿名内部类与Lambda的优劣,通过多线程案例展示其简化效果,并详细解析了Lambda的标准格式和使用前提。全文包含6个实战练习,涵盖不同参数和返回值场景下的Lambda用
2025-11-11 23:09:35
838
原创 Java 进阶: hashCode/equals 与异常处理深度解析
本文详解Java中hashCode()与equals()方法的关系及异常处理机制。hashCode()和equals()需同时重写以保证集合去重逻辑正确,遵循"equals为true则hashCode必须相等"的规则。异常处理包括try-catch捕获异常、throws声明异常和throw主动抛出异常,需区分运行时异常和受检异常。掌握这些知识点是保证对象去重正确性和程序健壮性的关键。
2025-11-10 18:40:52
1067
原创 深入解析 LeetCode 1:两数之和
摘要:"两数之和"是经典的数组遍历算法题,要求在数组中找出和为指定目标值的两个元素下标。本文详细解析了使用ArrayList的暴力解法:通过双重循环遍历所有元素对(j>i避免重复),将找到的下标存入ArrayList后转为数组返回。该解法时间复杂度O(n²),空间复杂度O(1),适合初学者理解基础数组操作和集合类应用。文章包含完整Java代码、复杂度分析、边界案例验证及实际应用场景,为进一步优化为哈希表解法奠定基础。
2025-11-09 22:48:55
813
原创 Java 面向对象进阶:抽象类、接口与 Comparable 接口
本文介绍了Java面向对象编程中抽象类、接口和Comparable接口的核心概念和应用。抽象类作为"设计模板",通过abstract关键字定义,不能实例化但支持多态,子类必须重写其抽象方法。接口是"行为规范",用interface声明,支持多继承和多实现,实现类需重写所有抽象方法。Comparable接口定义了对象排序规则,通过compareTo()方法实现自动排序。三者各有特点:抽象类侧重提取共性代码,接口定义行为契约,Comparable处理对象排序。合理使用这些
2025-11-09 21:30:40
881
原创 深入解析 LeetCode 1470:重新排列数组
本文分析了LeetCode1470题"重新排列数组"的解题思路。题目要求将长度为2n的数组按[x1,y1,x2,y2,...,xn,yn]的顺序重新排列。通过分析发现,x组元素在前n位,y组元素在后n位,可以采用一次遍历交替赋值的策略:初始化结果数组,遍历x组元素,将其与对应的y组元素交替放入结果数组。该方法时间复杂度为O(n),空间复杂度为O(n)。文章详细解析了代码实现、边界情况测试和应用场景,展现了从规律识别到策略设计的完整解题思路,对类似数组重排问题具有推广价值。
2025-11-08 16:51:37
852
原创 深入解析 LeetCode 1572:矩阵对角线元素的和 —— 从问题本质到高效实现
摘要: LeetCode 1572题考察矩阵对角线元素求和,要求主对角线(i=j)和副对角线(i+j=len-1)元素的和,且交点元素(奇数维矩阵中心)不重复计算。通过一次遍历同时累加两对角线的元素,若矩阵维度为奇数则减去重复计算的交点值,实现O(n)时间复杂度和O(1)空间复杂度的优化解法。该思路可推广至对称结构数据的高效处理,如图像分析、矩阵运算等领域,体现了遍历优化与边界处理的算法设计思想。
2025-11-08 15:46:25
1125
原创 深入解析 LeetCode 经典数组问题:元素和与数字和的差、最少翻转次数求异或和
本文分析了LeetCode上两个典型数组问题:计算元素和与数字和的绝对差、最少翻转次数使数组异或和为k。第一题通过一次遍历同步计算元素和与数位和,实现O(n)时间复杂度;第二题利用异或性质转化为统计1的个数问题,高效求解。文章提炼了"问题转化+分层计算"的核心思想,并指出数位操作和位运算技巧在算法中的广泛应用,如统计特定位数、去重问题等。两种解法均体现了通过合理转化问题、减少遍历次数来优化效率的算法思维,为处理数组和位运算问题提供了可迁移的解题框架。
2025-11-07 00:42:29
480
原创 Java 集合框架:Set 体系与实现类深度解析
本文全面解析Java Set集合框架的三大实现类:HashSet(基于哈希表,无序高效)、LinkedHashSet(哈希表+链表,保持插入顺序)和TreeSet(红黑树实现,支持排序)。重点剖析了各集合的底层数据结构、核心特性及适用场景,强调自定义对象必须正确重写equals()和hashCode()方法(HashSet)或实现Comparable接口(TreeSet)。文章通过代码示例演示了集合的基本操作与遍历方式,并提供了详细的选型对比表,指导开发人员根据"去重"、"顺序
2025-11-07 00:22:52
1073
原创 深入解析 LeetCode 数组经典问题:删除每行中的最大值与找出峰值
本文解析了LeetCode上两个典型数组问题。2500题通过排序每行后按列遍历累加最大值,时间复杂度为O(mnlogn),展示了预处理优化的价值;2951题通过线性遍历筛选满足"严格大于左右元素"的峰值,时间复杂度为O(n),体现了条件判断的重要性。两个问题都强调了数组操作基础、边界条件处理及问题抽象能力,并提供了进阶思考方向,帮助读者掌握排序优化和条件筛选的核心思想,提升解决数组类问题的能力。
2025-11-06 23:59:17
605
原创 Java 集合框架:HashMap 与 Map 体系深度解析
本文系统解析了Java Map体系中的核心实现类HashMap及其应用。HashMap采用数组+链表+红黑树结构(JDK8+),具有高效查询(O(1)-O(logn))、键值对存储、无序性、允许null值等特点,但不保证线程安全。文章详细介绍了HashMap的10个核心方法及三种遍历方式,对比了TreeMap(红黑树实现,有序)和Hashtable(线程安全但性能低)的特性差异。最后给出选型建议:优先HashMap,需排序选TreeMap,多线程用ConcurrentHashMap,帮助开发者根据需求选择最
2025-11-06 18:22:42
1039
原创 Java 集合框架:List 体系与实现类深度解析
本文深入解析Java集合框架中的List体系,重点比较ArrayList和LinkedList两大核心实现类的特性与适用场景。ArrayList基于动态数组实现,具有查询高效、增删较慢的特点,适合查询频繁的业务场景;LinkedList采用双向链表结构,增删快速但查询性能较低,适用于频繁修改数据的场景。同时介绍了遗留类Vector的线程安全特性及不推荐使用的原因。文章通过代码示例详细展示了各类核心操作方法,并提供了选型建议:优先使用ArrayList,增删频繁时选用LinkedList,多线程环境应考虑并发
2025-11-05 18:01:01
1468
原创 Java 入门:环境搭建、第一个程序与数据类型
本文介绍了Java开发入门的基础知识,主要包括:1)JDK、JRE和JVM的关系及JDK安装配置;2)Java跨平台原理,通过JVM实现"一次编译到处运行";3)第一个Java程序的编写、编译与运行流程;4)Java注释、8种基本数据类型和引用数据类型;5)进制转换方法及数值表示;6)数据类型自动转换和强制转换规则。这些内容是Java编程的基础核心要点,为后续深入学习打下基础。
2025-11-04 10:30:00
608
原创 Java 底层原理:从硬件存储到程序运行
本文从计算机三大核心硬件(CPU、内存、磁盘)出发,解析了Java程序的底层运行机制。CPU以纳秒级速度执行指令,内存作为临时电信号存储,磁盘提供长期数据保存。Java程序运行流程为:源代码经编译生成字节码存储在磁盘,运行时加载到内存,由JVM解释执行并由CPU运算。硬件性能直接影响程序表现:磁盘I/O制约启动速度,内存大小限制对象数量,CPU性能决定计算效率。理解"硬件-软件"协同原理,有助于从底层优化Java程序性能,解决内存泄漏、CPU瓶颈等问题,是成为高级Java工程师的重要基础
2025-11-03 18:51:16
953
原创 Java 高级特性:泛型与包装类深度解析
本文探讨Java进阶核心特性:泛型和包装类。泛型通过类型参数化实现代码复用和类型安全,在编译期检查后运行时擦除类型信息。包装类(如Integer)为基本类型提供对象封装,支持自动装箱/拆箱,需注意缓存机制带来的"128陷阱"。两者协同工作支撑了集合框架等核心功能:泛型约束集合元素类型,包装类使基本类型可存入集合。掌握这些特性对理解Java类型系统和开发高效代码至关重要。
2025-11-02 23:08:57
978
原创 Java 基础:数据类型与计算机存储原理
本文系统介绍了Java数据类型分类及其存储原理。主要内容包括:1)数据类型分为基本类型(整型、浮点型、字符型、布尔型)和引用类型;2)整型采用补码存储机制,解析了源码、反码、补码的转换逻辑;3)浮点型遵循IEEE754标准,包含符号位、阶码和尾码三部分;4)字符型通过编码表映射存储;5)介绍了函数定义、调用及递归实现。这些底层存储原理是深入理解Java编程的基础。
2025-11-02 09:24:44
746
原创 Java 多态:继承、方法重写与运行时绑定
本文深入解析Java多态特性,重点阐述其核心概念、实现条件和内存模型。多态通过"父类引用指向子类对象"实现,依赖继承与方法重写,遵循"编译时看父类,运行时看子类"的绑定规则。文章通过动物类示例展示多态调用机制,分析复杂继承场景下的方法调用优先级,并强调多态在代码解耦和扩展性方面的实战价值。最后总结多态五大要点:定义、实现条件、调用规则、类型转换限制及设计优势,建议开发者善用多态构建灵活可扩展的面向对象系统。
2025-11-01 19:11:38
1279
原创 Java 静态机制:静态变量、方法、代码块与类加载
本文全面解析了Java中static关键字的特性与应用。静态机制使成员与类本身关联,包括静态变量(存储在方法区,所有对象共享)、静态方法(可通过类名直接调用,不能访问实例成员)和静态代码块(类加载时执行)。文章详细阐述了静态与非静态成员的区别、内存模型、类加载顺序(父类优先),并通过工具类设计、单例模式等实战案例展示其应用场景。静态机制是理解Java类加载、对象初始化等核心概念的基础,合理使用可优化程序设计,但需注意访问限制。
2025-10-31 20:27:25
1456
原创 Java 继承、方法重载与重写、this 与 super 关键字
本文深入讲解了Java继承的核心概念与实践。首先分析了继承的本质,通过extends实现代码复用,并剖析了子类对象创建时的内存模型(先父类后子类)。其次详细区分了方法重载(同一类中同名不同参)与方法重写(子类覆盖父类方法),强调重写需遵循"两同两小一大"原则。重点解析了this和super关键字:this代表当前对象引用,用于区分变量或调用本类构造;super代表父类引用,用于访问父类成员。最后通过动物继承体系的实战案例,展示了继承、方法重写与关键字的具体应用,为掌握Java面向对象编程
2025-10-30 23:16:22
1142
原创 Java 输入操作详解:Scanner 类的使用与实战
本文详细介绍了Java中Scanner类的使用方法,重点讲解了五个核心要点:1)通过import语句导入java.util.Scanner类;2)使用new Scanner(System.in)创建控制台输入对象;3)掌握nextInt()、nextDouble()等基本类型读取方法及next()与nextLine()的区别;4)利用hasNextXxx()进行异常预防和输入校验;5)使用完毕后调用close()释放资源。文章通过代码示例展示了各类输入操作,并提供了完整的用户信息录入系统实战案例,帮助开发者
2025-10-29 20:01:03
1295
原创 Java 面向对象编程:类与对象、封装及与面向过程的对比
本文对比了面向过程与面向对象编程的差异,重点讲解了Java中类与对象的概念。面向过程以函数为核心,共享全局数据;而面向对象以类和对象为基础,通过封装实现数据隔离和方法共享。文章详细解析了类的定义(属性和方法)、对象的创建(new关键字)及内存模型,并通过链表节点设计展示了面向对象的实际应用。最后强调封装通过访问修饰符控制权限的优势,为后续学习继承、多态等特性奠定基础。
2025-10-28 13:00:00
1118
原创 Java 字符串:常量池、== 与 equals、不可变性及操作方法
本文深入解析Java字符串的核心机制,涵盖常量池存储、比较运算、不可变性及常用操作。关键点包括:1. 常量池机制:字符串字面量共享存储,new String()在堆中创建独立对象;2. 比较运算:==比较地址,equals()比较内容,String类重写了equals方法实现逐字符比对;3. 不可变性:final修饰的字符数组保证内容不可修改,带来线程安全、哈希稳定等优势;4. 操作优化:避免频繁拼接,推荐使用StringBuilder提升性能。理解这些机制能有效避免常见陷阱,编写更高效的字符串处理代码。
2025-10-27 19:01:14
1111
原创 Java 运算符:结合运算符、位运算与移位运算
本文系统讲解Java中的三类运算符:1. 结合运算符(如+=)简化赋值操作,提升代码简洁性和可读性,编译器会优化其性能;2. 位运算包括按位与(&)、或(|)、异或(^),可直接操作二进制位,适用于状态标记、数据加密等场景;3. 移位运算(左移<<、右移>>、无符号右移>>>)能高效实现乘除运算,性能显著优于常规算术运算。文章通过原理分析、代码示例和性能对比,帮助开发者掌握这些运算符的底层逻辑和实用技巧,为编写高效Java代码提供指导。
2025-10-26 12:30:00
1031
原创 深入解析 LeetCode 经典问题 :K 个元素的最大和与在既定时间做作业的学生人数
本文解析了LeetCode上两个典型数组问题:1)"K个元素的最大和"采用贪心算法,通过排序数组和循环更新最大元素实现,时间复杂度O(nlogn+k);2)"在既定时间做作业的学生人数"使用线性遍历统计满足时间区间的学生数,O(n)复杂度,并探讨了预处理+二分查找的优化方案。两问题均涉及数组基础操作,但分别展示了贪心策略和线性统计的不同解题思路,强调了根据问题特征选择合适算法的重要性。文章还提供了进阶思考,如数据规模对算法选择的影响和多维查询优化,帮助读者培养场景化算
2025-10-25 11:45:00
1957
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅