我刚刚发现了一段我不理解的代码。
b[a[i] - 1]++;
这是背景。
int firstDuplicate(int[] a) {
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[a[i] - 1]++;
if (b[a[i] - 1] > 1) {
return a[i];
}
}
return -1;
}
数组是
int test[] = {2, 3, 3, 1, 5, 2};
可以请有人向我解释一下吗?
答案 0 :(得分:0)
a[]
是一个整数数组。
b[a[i]]
表示数组b
中的索引为a[i]
。
e.g。
a[] = {1, 2, 3} & b[] = {10, 20, 30}
此处b[a[0]]
会为您20
,因为a[0]
返回1
而b[1]
为20
。
在您的代码中,b[a[i] - 1]++
等同于b[a[i] - 1] = b[a[i] - 1] + 1
从我的...如果i = 0
b[a[0] - 1]
会将10
作为输出。
而且b[a[0] - 1]++
会将b[0]
的值修改为11
。
答案 1 :(得分:0)
阵列&#34; a&#34;必须包含正整数,不小于1且不大于&#34; a.length&#34;。
此代码创建一个数组&#34; b&#34;跟踪每个整数的数量。
因此,例如b [0]表示1的数量,b [1]表示2的数量,依此类推。
通过执行b [...] ++,您将增加该位置的计数。