本文介绍了“BM83 字符串变形”题目:给定长度 n 的只含字母和空格的字符串,将其以空格分割的单词顺序反转,并对每个字符进行大小写互换,例如 “Hello World” → “wORLD hELLO”。要求时间、空间均为 O(n)。解法思路是先用 `split(" ", -1)` 处理可能的多空格,再从右向左遍历单词,利用 `StringBuilder` 逐个字符判断并转换大小写后拼接,单词之间补空格。代码实现简洁,满足题目约束。

该题要求读取两个以字符串形式给出的非负整数(0≤n≤10^1000),计算它们的乘积并以字符串返回。要求空间复杂度O(n),时间复杂度O(n²)。示例包括“11”“99”得到“1089”,以及“1”“0”得到“0”。参考实现直接利用 Java 的 `BigInteger` 类,将输入字符串构造为 `BigInteger`,调用 `multiply` 完成大数乘法,再将结果转换为字符串返回,代码简洁且满足题目复杂度要求。

本文介绍了在01矩阵中统计岛屿数量的问题,岛屿由上下左右相邻的'1'构成。通过示例说明输入输出及边界情况后,给出基于深度优先搜索的 Java 解法:遍历矩阵,遇到未访问的'1'时计数并递归将其连通的所有'1'置为'0',实现岛屿的消除。核心代码包括 solve 函数统计岛屿数和 dfs 函数进行四方向扩展,时间复杂度为 O(n·m)。

本文介绍了“NC54 三数之和”题目:在长度不超过3000、元素绝对值≤100的数组中找出所有满足 a+b+c=0 的唯一三元组。要求时间、空间均为 O(n²)。核心思路是先对数组排序,利用固定第一个元素后双指针在剩余区间搜索,使和为零时记录结果并通过跳过相同值实现去重。代码实现展示了排序、遍历、双指针移动以及重复元素的过滤,满足题目示例输出。

本文介绍了求取两个长度不超过5000的字符串的唯一最长公共子串的问题,要求时间、空间复杂度均为 O(n²)。给出基于动态规划的 Java 实现:使用一维 dp 数组逆序遍历,实现递推公式 dp[j+1]=dp[j]+1(字符相等)或置零(字符不等),并在遍历过程中记录最长子串的长度及其在 str1 中的结束位置,最后通过 substring 提取并返回结果。

该文章介绍了如何解决“删除链表的倒数第n个节点”的问题。问题要求在O(1)的空间复杂度和O(n)的时间复杂度内,删除给定链表中倒数第n个节点并返回链表的头指针。 提供的Java代码解决方案采用双指针法:先让一个指针(cur)向前移动n步,然后同时移动两个指针(cur和pre),直到cur到达链表末尾。此时,pre指针就指向待删除节点的前一个节点,通过调整pre.next指针即可完成删除操作。代码考虑了n为0或链表为空的情况,以及需要删除头节点的情况,确保了代码的健壮性。