public int[] invert(int[] ary, int min, int max) // min and max inclusive
{
int[] ary_all = new int[max - min + 1];
for (int i = min; i <= max; i++)
ary_all[i] = i;
if (ary == null || ary.length == 0)
return ary_all;
int total = ary_all.length;
for (int i = 0; i < ary.length; i++)
{
if (ary_all[ary[i] - min] != min - 1)
{
ary_all[ary[i] - min] = min - 1;
total--;
}
}
int[] ary_result = new int[total];
for (int i = ary_all.length - 1; i >= 0; i--)
if (ary_all[i] != min - 1)
ary_result[--total] = ary_all[i];
return ary_result;
}