在Java中的阵列内部减小(数组[i--])



我从leetcode

找到了一个解决方案
public class Solution {
public void merge(int A[], int m, int B[], int n) {
    int i = m - 1, j = n - 1, k = m + n - 1;
    while(i >= 0 && j >= 0) {
        A[k--] = A[i] > B[j] ? A[i--] : B[j--];
    }
    while(j >= 0) {
        A[k--] = B[j--]; //line 8
    }
}

我试图理解Java中的A [K-]。对于第8行,这是否意味着

        A[k] = B[j];
        k--;
        j--;

示例更容易。说 k是5, j是2。发生的是:

  1. A[k]位于A[5]
  2. k从5减少到4。
  3. 复制B[j]的值,即B[2]
  4. j从2降低到1。
  5. B[2]复制的值分配到1个确定的位置1,即 A[5]

除外,只要保证结果相同,允许编译器重新排列订单。

是的,是的,您是正确的,结果也与您得出的结果相同:

    A[k] = B[j];
    k--;
    j--;

A[k--] = 2;的意思是:
"我在数组的k索引和情感后影响值2,k采用k-1的值"
"
例如:

int k = 4;
int A[] = {0, 0, 0, 0, 0};
// here k=4 and A={0, 0, 0, 0, 0}
A[k--] = 12;
// Now k=3 and A={0, 0, 0, 0, 12}

最新更新