【问题标题】:Decrement inside array in java (Array[i--])java中的数组内部递减(Array[i--])
【发布时间】:2017-02-23 20:57:26
【问题描述】:

我从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--;

【问题讨论】:

  • 还有什么不懂的?
  • 我说:“那你不明白怎么办?”
  • 是的,实际上就是这个意思。

标签: java arrays syntax decrement


【解决方案1】:

举个例子就更容易了。假设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.中确定的位置,即A[5]

除了,只要保证结果相同,编译器就可以重新排列顺序。

所以是的,你是对的,结果也和你得到的结果一样:

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

【讨论】:

    【解决方案2】:

    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}
    

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 2023-04-10
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多