文章介绍了求整数平方根的编程题,要求实现 `int sqrt(int x)` 返回向下取整的平方根,空间复杂度 O(1),时间复杂度 O(log x)。文中给出示例输入输出,并提供基于牛顿迭代的 Java 解法:先判断 `x<=0` 返回 0,初始化 `res=x`,循环执行 `res=(res + x/res)/2`,直到 `res <= x/res`,最后返回 `res`。

本文介绍了 NowCoder NC103 “反转字符串”题目:给定长度 ≤1000 的字符串,要求在 O(n) 时间、O(n) 空间内输出其逆序。示例说明空串和普通串的输入输出。提供两种 Java 解法:① 将字符转为数组,逐位赋值为原串对应的倒序字符,返回新字符串;② 直接使用 `StringBuilder(str).reverse().toString()` 完成逆转。两种实现均满足题目复杂度要求。

文章介绍了“NC61 两数之和”题目:在整数数组中寻找两数之和等于目标值的下标(从1开始),返回升序下标。要求时间复杂度 O(n),空间 O(n)。给出示例说明输入输出。随后提供 Java 解法,利用哈希表在一次遍历中记录已见元素及其下标,若当前元素的 complement 已在表中则直接返回对应下标,实现 O(n) 的线性查找。

该题要求在整数数组中(不去重)找出第 k 大的元素,保证答案存在,时间复杂度 O(n log n),空间复杂度 O(1)。数据规模为 0 ≤ n ≤ 10⁵,1 ≤ k ≤ n,元素值在 0 ~ 10⁹。示例说明第 k 大是按包含重复元素计数的结果。文中给出两种实现:① 直接对数组使用 Arrays.sort(),返回 a[n‑k];② 构建最大堆(PriorityQueue),先全部入堆,再弹出 k‑1 次,返回堆顶。两种方案均满足题目要求。

本文介绍了二叉树层序遍历的实现。给定二叉树根节点,要求按层从左到右输出各层节点值列表,节点数可达10⁵。解法采用广度优先搜索,利用队列逐层遍历:每轮记录当前队列大小作为本层节点数,依次弹出节点并将其左右子节点加入队列,同时收集节点值形成本层列表。所有层列表最终组成返回结果。代码实现基于 Java,时间复杂度 O(n),空间复杂度 O(n)。

该题要求在长度 n 且可能含重复元素的数组中,找出不去重的最小 k 个数,返回任意顺序。约束为 0≤k,n≤10000,元素值在 0~1000 之间,空间 O(n),时间 O(n log n)。思路是先对数组使用 Arrays.sort 排序,再取前 k 个元素放入 ArrayList 返回。示例包括普通情况、k 为 0 以及含重复值的数组。