最后的从差分求原数组时需要以 1 为根,而不是 a[1];
最后取除重复计算的代码是:
for (int i = 2; i <= n; ++ i ) -- val[a[i]];
而不是:
for (int i = 2; i <= n; ++ i ) -- val[i];