本文介绍了“NC54 三数之和”问题:在长度≤3000、元素绝对值≤100的数组中找出所有唯一的三元组,使其和为0。要求时间、空间均为O(n²)。解法先对数组排序,利用双指针遍历,每次固定一个元素并在剩余区间寻找满足条件的两数,过程中通过跳过相同值实现去重,最终返回不重复的三元组集合。示例展示了不同输入的期望输出。

本文介绍了在 NowCoder 平台上“NC127 最长公共子串”题目。给定两字符串 str1、str2(长度均 ≤5000),要求在 O(n²) 时间、O(n²) 空间限制内找出唯一且必存的最长公共子串。解法采用动态规划:使用长度为 str2+1 的一维数组 dp,逆序遍历 str2,若字符相等则 dp[j+1]=dp[j]+1,否则置零;同时记录当前最长子串的长度 maxLength 和其在 str1 中的结束位置 maxLastIndex。最终通过 substring 提取并返回该子串。代码实现简洁,满足题目要求。

本文介绍了在链表中删除倒数第 n 个节点的算法实现。题目要求在 O(n) 时间、O(1) 额外空间内完成,链表长度 ≤1000,n 有效。解法采用快慢指针:先让快指针先行 n 步,若此时已到末尾则删除头节点;否则快慢指针同步移动至快指针到达链表末尾时,慢指针指向待删除节点的前驱,修改其 next 指向跳过目标节点。代码示例为 Java 实现,包含空链表和 n 为0 的边界检查。

本文介绍了判断仅含 '('、')'、'{'、'}'、'['、']' 六类字符的字符串是否为合法括号序列的问题,要求时间、空间复杂度均为 O(n)。核心思路是使用栈:遍历字符时,遇左括号将对应的右括号压入栈;遇右括号时检查栈顶是否匹配并弹出,若不匹配或栈为空则返回 false。遍历结束后,栈为空即为合法序列。代码实现基于 Java 的 `Stack<Character>`,通过上述方式实现了 O(n) 的解法。

给定长度不超过 10000 的单链表,要求在 O(n) 时间、O(1) 空间内找出环的入口节点,若无环返回 null。输入分为链表前段和环段,系统会据此组装有环或无环链表。解法采用 Floyd 快慢指针:先用两指针判断是否存在环并得到相遇点;若存在环,将一个指针移回表头,两指针同步前进,首次相遇即为环入口。代码实现了 `hasCycle` 检测环并返回相遇节点,`EntryNodeOfLoop` 进一步定位入口,满足题目要求。

题目要求将有序数组 B 合并到有足够空间的有序数组 A 中,使 A 成为整体升序。数组长度 ≤100,A 已预留 m+n 空间,直接在 A 内完成合并,无需返回或打印。示例展示不同顺序的合并结果。提供的 Java 解法采用双指针遍历 A、B,将较小元素依次放入新建的临时数组 sorted,遍历结束后再将 sorted 复制回 A,实现原地合并。