在练习一些算法时,我遇到了以下问题,我无法弄清楚时间和空间复杂度是多少。
问题: 从数组中打印出加起来为 k 的数对。例如
int[] arr = new int[]{1, 7, 2, 3, 4};
int k = 4;
findSum(arr, k);
将输出
Pair: 1, 3
我的问题: 以下解决方案的运行时间和空间复杂度是多少?
下面的 Java 示例:
private void findSum(int[] arr, int k) {
if (arr == null || arr.length < 2)
throw new RuntimeException();
Arrays.sort(arr);
int i = 0; int j = arr.length -1;
while (i < j) {
int sum = arr[i] + arr[j];
if (sum == k)
{
System.out.println("Pair: " + arr[i] + ", " + arr[j]);
i++;
} else if (sum > k) {
j--;
} else {
i++;
}
}
}