
获得徽章 1
- #每日一题#
最小的k个数
这段代码定义了一个名为 Solution 的类,其中包含一个名为 getLeastNumbers 的方法,该方法接受一个整数数组 arr 和一个整数 k 作为参数,返回一个整数数组,其中包含数组中第 k 大的元素。
该方法首先使用 quickSort 方法对数组进行排序,然后使用 Arrays.copyOf 方法将数组复制到一个新的数组中,其中包含 k 个元素。
quickSort 方法使用递归实现快速排序算法。在每次递归中,它将数组分成两个子数组,并将它们的左右边界指定为 l 和 r。然后,它将数组中的元素按照它们在 l 和 r 之间的顺序进行排序,并将它们的左右边界指定为 i 和 j。最后,它将数组中的元素按照它们在 i 和 j 之间的顺序进行排序,并将它们的左右边界指定为 i 和 l。
在 swap 方法中,它交换数组中 i 和 j 的元素。
这段代码的时间复杂度为 O(nlogn),其中 n 是数组的长度。展开评论点赞 - #每日一题#
二叉树搜索k大节点
这段代码定义了一个二叉树节点类 TreeNode,其中包含一个整数值 val 和两个指向左右子节点的指针 left 和 right。然后定义了一个名为 Solution 的类,其中包含一个整数变量 k 和一个名为 kthLargest 的函数,该函数接受一个二叉树的根节点和一个整数 k,并返回第 k 大的节点的值。
在函数中,我们首先定义了一个名为 dfs 的辅助函数,它接受一个二叉树的根节点作为参数。如果根节点为空,则直接返回。否则,我们将 res 更新为当前节点的值,然后递归地遍历右子树和左子树。当 k 减为 0 时,我们将当前节点的值作为结果返回。
最后,我们在 kthLargest 函数中调用 dfs 函数,并将 k 的值作为参数传递给它。展开评论点赞 - #每日一题#
public int fib(int n):定义了一个公有方法 fib,该方法接受一个整数 n 作为参数,并返回一个整数结果。
int a = 0, b = 1, sum;:定义了三个整数变量 a、b 和 sum,并将 a 初始化为 0,b 初始化为 1。
for(int i = 0; i < n; i++) { ... }:使用 for 循环计算斐波那契数列的第 n 项,循环次数为 n。
sum = (a + b) % 1000000007;:将 a 和 b 的和对 1000000007 取模并赋值给 sum,这是为了避免数据溢出。
a = b;:将 b 的值赋给 a。
b = sum;:将 sum 的值赋给 b。
return a;:返回斐波那契数列的第 n 项的值,即 a。
这段代码的时间复杂度为 $O(n)$,空间复杂度为 $O(1)$,其中 $n$ 为斐波那契数列的第 n 项。展开评论点赞