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

最近更新

算法 2021-11-16

5. 最长回文子串

本文介绍了求解“最长回文子串”问题的实现思路与代码。给定字符串 s,要求在其中找出最长的回文子串。核心算法采用中心扩展法:遍历可能的回文中心(包括字符本身和字符间的空隙),分别向左右两侧扩展,只要左右字符相等即继续扩展,并记录长度最大的子串。代码实现中,循环遍历 2·len‑1 个中心位置,通过 left、right 指针进行扩展比较,最终返回最长回文子串 result。示例输入 "babad"、"cbbd"、"a"、"ac" 均得到正确输出。

NowCoder 阅读全文
Java 2021-11-16

LinkedList常用API详解

本文系统梳理了 Java LinkedList 常用 API 的功能与实现细节,重点包括:peek/peekFirst/peekLast 用于获取头、首、尾元素但不删除;poll/pollFirst/pollLast 用于获取并删除相应元素;offer/offerFirst/offerLast 用于在链表尾部、头部或末尾插入新元素。文中通过示例代码演示了这些方法的调用顺序及运行结果,直观展示了 LinkedList 在元素访问、删除和添加方面的行为,帮助读者快速掌握其常用操作。

集合 阅读全文
算法 2021-11-16

647. 回文子串

本文介绍了 LeetCode 647 “回文子串”问题:统计字符串中所有回文子串的数量,子串位置不同即视为不同。通过中心扩展法遍历 2·n‑1 个可能的中心,分别向左右扩展,只要左右字符相等即计数并继续扩展,最终返回计数结果。代码实现简洁,时间复杂度 O(n²),空间复杂度 O(1)。

NowCoder 阅读全文
算法 2021-11-15

322. 零钱兑换

本文介绍 LeetCode 322 “零钱兑换”问题:给定硬币面额数组和目标金额,求凑成该金额的最少硬币数,若不可达返回‑1。实现采用自底向上的动态规划,创建长度为 amount+1 的数组 target,初始化为 amount+1(视作不可达),target[0]=0。遍历每个金额 i,尝试所有硬币 coin,若 i‑coin≥0,则更新 target[i]=min(target[i], target[i‑coin]+1)。最终若 target[amount]仍为初始值则返回‑1,否则返回该最小值。代码示例展示了完整实现及测试用例。

NowCoder 阅读全文
算法 2021-11-15

1324.竖直打印单词

本文介绍了 LeetCode 1324 “竖直打印单词”题目及其 Java 实现。给定一个由空格分隔的字符串,要求按单词出现顺序垂直排列并返回字符串列表,列末尾不能有多余空格。实现思路:先用 `split(" ")` 将句子拆分为单词数组,遍历求出最长单词长度 `maxLength`;随后逐行(从第 0 行到 `maxLength‑1`)构建 `StringBuilder`,若当前单词在该行有字符则追加,否则追加空格。完成一行后从右向左寻找最后一个非空格字符,截取子串去除尾随空格后加入结果列表。代码示例包括 `printVertically` 方法及主函数演示。

NowCoder 阅读全文
Java 2021-11-12

集合工具类Collections详解

Collections 是 JDK java.util 包下的集合工具类,提供一系列静态方法,帮助对 List、Collection 等进行排序(reverse、shuffle、sort、swap)、查找(binarySearch、max、min、frequency)、填充(fill)等常用操作。它还能通过 synchronizedXxx 返回线程安全的包装集合,避免 ArrayList、HashMap 的并发问题;提供 empty、singleton、unmodifiable 等创建不可变集合的工厂方法;以及 addAll、disjoint 等实用工具。文章通过代码实例演示了这些方法的使用效果,并指出应深入源码了解实现细节,使用 Collections 能提升编码水平,避免自行实现低效代码。

集合 阅读全文