java 中的数组内部递减 (Array[i--])
Decrement inside array in java (Array[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--;
A[k--] = 2;
意思是:
"I affect the value 2 at the k index of the array and after the affectation, the k takes the value 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}
举个例子更容易。假设 k
是 5,j
是 2。结果是,顺序是:
A[k]
位于 A[5]
k
从 5 递减到 4。
- 复制
B[j]
的值,即 B[2]
。
j
从 2 递减到 1。
- 从
B[2]
复制的值赋值到1.中确定的位置,即A[5]
。
除此之外,允许编译器重新排列顺序,只要保证结果相同即可。
所以是的,你是对的,结果也与你从以下获得的结果相同:
A[k] = B[j];
k--;
j--;
我从 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--;
A[k--] = 2;
意思是:
"I affect the value 2 at the k index of the array and after the affectation, the k takes the value 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}
举个例子更容易。假设 k
是 5,j
是 2。结果是,顺序是:
A[k]
位于A[5]
k
从 5 递减到 4。- 复制
B[j]
的值,即B[2]
。 j
从 2 递减到 1。- 从
B[2]
复制的值赋值到1.中确定的位置,即A[5]
。
除此之外,允许编译器重新排列顺序,只要保证结果相同即可。
所以是的,你是对的,结果也与你从以下获得的结果相同:
A[k] = B[j];
k--;
j--;