首页 > 解决方案 > 下面这段代码的时间复杂度是多少

问题描述

int FindSum(int[] A, int[] B){
    int[] temp = A;
    A = B;
    B = temp;
}

在这个 java 代码中,我们交换了两个数组,在这种情况下,只有数组的内存引用正在改变,或者 A 和 B 之间的元素交换?时间复杂度为 O(1) 或 O(m+n),其中 m 和 n 分别是数组 A 和 B 的大小。这段代码是在 leetcode https://leetcode.com/articles/median-of-two-sorted-arrays/上找到的

标签: javaarraystime-complexityswapmemory-reallocation

解决方案


此代码为 O(1)。作为旁注,它什么都不做。

它们不是原始的,所以它们只是交易参考。此外,局部变量 A 和 B 在更改时不会反映调用它们的任何方法的更改。在 main 中交换 A 和/或 B 的实际值的唯一方法是在传递的数组中通过引用来更改它们,但是交换引用的位置没有任何作用。


推荐阅读