38 归档分页
370 留言互动
4 核心专题

1287. 有序数组中出现次数超过25%的元素

本文介绍了 LeetCode 第 1287 题:在一个非递减有序整数数组中,恰有一个元素出现次数超过数组长度的 25%。要求找出该元素。题目给出数组长度上限 10⁴,元素值范围 0~10⁵。解法利用数组有序性,只需遍历至 `arr.length - arr.length/4`,检查 `arr[i]` 与 `arr[i + arr.length/4]` 是否相等,若相等即为满足条件的元素,时间复杂度 O(n),空间复杂度 O(1)。代码实现简洁明了。

70. 爬楼梯

本文介绍了经典的爬楼梯问题:给定需要爬 n 阶楼梯,每次可迈 1 或 2 步,求到达顶层的不同方式数。通过示例说明 n=2 时有 2 种方案,n=3 时有 3 种方案,并给出约束 1 ≤ n ≤ 45。解决思路采用动态规划,利用递推关系 f(i)=f(i‑1)+f(i‑2),并用数组 dp 保存中间结果,特殊处理 n≤2 的情况直接返回 n。代码实现简洁高效,时间复杂度 O(n),空间复杂度 O(n)。

922. 按奇偶排序数组 II

该题要求将长度为偶数且奇、偶数各占一半的数组重新排列,使得奇数位于奇数索引、偶数位于偶数索引。思路是分别收集数组中的所有偶数和奇数,分别存入两个长度为 n/2 的临时数组,然后交替写回原数组:先放一个偶数,再放一个奇数,依次完成整个数组的重构。代码实现中使用两次遍历完成分离和合并,时间复杂度 O(n),额外空间 O(n)。

面试现场【Spring篇】

本文系统梳理了 Spring 面试常见知识点:列举了 Spring 使用的工厂、代理、单例、模板方法、观察者、适配器等设计模式;概述了 Core、Context、Web、MVC、DAO、ORM、AOP 等核心模块;阐释 IOC/DI 的本质、BeanFactory 与 ApplicationContext、FactoryBean 的区别以及 @Repository、@Service、@Component、@Controller 的分层意义;介绍 AOP 的概念、通知类型、动态/静态代理及 JDK 与 CGLIB 的实现差异,并比较 Spring AOP 与 AspectJ AOP;详细说明 Bean 的四阶段生命周期、三级缓存如何解决单例循环依赖以及为何需三级缓存;对比 @Autowired 与 @Resource 的注入策略;梳理 Spring 事务的五种隔离级别和七种传播行为;最后解析 Spring Boot 自动装配的 EnableAutoConfigurationImportSelector、spring.factories 与条件过滤机制。

13. 罗马数字转整数

本文介绍了 LeetCode 第13题“罗马数字转整数”。先给出罗马字符及其数值,并说明仅在 I、X、C 前置于特定更大字符时构成减法(如 IV、IX、XL、XC、CD、CM)。题目要求把合法的罗马数字(长度 ≤15,数值 1~3999)转换为整数。提供的解法遍历字符串,记录前一个字符的数值;若前值小于当前值则减去前值,否则加上前值,遍历结束后再加上最后一个数值。该算法时间 O(n)、空间 O(1)。代码实现采用 switch 映射字符到数值。

1507. 转变日期格式

本文介绍 LeetCode 1507 “转变日期格式”题目:输入形如 “Day Month Year”(如 “20th Oct 2052”)的字符串,需要输出标准格式 “YYYY‑MM‑DD”。核心思路是先按空格拆分获取年、月、日,使用月份数组映射英文缩写到两位数字,去除日中的序数后缀并补零。代码实现通过字符串分割、遍历匹配、replace 与条件格式化完成转换,保证输出符合“YYYY‑MM‑DD”。

20.有效的括号

本文介绍了判断仅含括号字符的字符串是否有效的问题。要求左括号必须被对应类型且顺序正确的右括号闭合。给出示例并说明输入长度上限为10⁴。解法使用栈:遍历字符,遇左括号压入对应的右括号,遇右括号时检查栈顶是否匹配并弹出,若不匹配或栈空则返回false。遍历结束后栈为空即为有效。代码实现简洁高效,时间复杂度 O(n),空间复杂度 O(n)。

1108. IP 地址无效化

本文介绍了 LeetCode 1108 题 “IP 地址无效化”。要求将给定的有效 IPv4 地址中的每个点号(.)替换为字符串 “[.]”,返回处理后的结果。文中给出两例输入输出示范,并提供了 Java 实现:遍历地址字符,遇到 ‘.’ 时追加 “[.]”,否则直接追加原字符,最终返回构建的字符串。该解法时间复杂度 O(n),空间复杂度 O(n)。

遍历HashMap的几种方式及效率对比

本文通过两套含100万条记录的HashMap(键为连续整数和等差数列)实验,对比了六种遍历方式的耗时。结果显示:①键值简单时查找更快;②在大数据量下,遍历key + value时使用entrySet(尤其for‑each)比keySet效率更高;③仅需value时直接遍历values最快;④在遍历key时,keySet的iterator 与 for‑each 性能相当,而entrySet 反而慢于keySet。综合建议:获取键值对优先使用entrySet,获取单纯值使用values,键本身简单时性能更佳。