0

我不太明白这个循环是如何工作的:

 for(int i = 0, j = 0; i < n; i++){
        for(; j < m; j++){

更合适的例子

int arr[] = {1, 2, 3, 4, 5, 6, 7};
int arr1[] = {7, 6, 5, 4, 3, 2, 1};
for (int i = 0, j = 0; i < n; i++) {
  for (; j < m; j++) {
    if (arr[i] + arr1[j] < 0) break;
    if (arr[i] + arr1[j] > max) max = arr[i] + arr1[j];
  }
}

当循环开始时,它们是否同时工作?就像 [[1+7][2+6][3+5] 等.....],意味着随着它的增加,它们都会产生总和

或者像嵌套循环一样工作

如果我们在第二个循环中 break 或 make continue 会发生什么?非常详细和更多的信息和解释将不胜感激

4

2 回答 2

0

复杂度将是 O(n+m),因为内部循环只会运行一次并且 j 不会被重置为 0。

于 2020-04-29T16:13:41.730 回答
-1

它是一个内循环和外循环的嵌套循环。内循环的变量在外循环中初始化。这很不常见。如果您不确定它的行为方式,那么您可以在System.out这里和那里打印一些东西。它递增 (i = 0, j = 0), (i = 0, j = 1), ..., (i = 0, j = m), (i = 1, j = 0),... 如果您在内部循环中中断或继续,然后它以 (i+1, j) 继续,因为 j 未重置为 0。

结果,时间复杂度为 O(n * m)。

于 2020-04-29T14:31:43.863 回答