Here’s both repeatedIntSeq() & repeatIntSeq() together for easier implementation comparison:
static final int[] repeatedIntSeq(
final int n, final int lo, final int hi, final int step)
{
final int
inc = step != 0 ? abs(step) : 1,
dir = inc * (lo < hi ? 1 : -1),
qty = abs(n),
len = (abs(hi - lo) / inc + 1) * qty,
seq[] = new int[len];
for (int i = 0; i < len; ++i) seq[i] = i / qty * dir + lo;
return seq;
}
static final int[] repeatIntSeq(
final int n, final int lo, final int hi, final int step)
{
final int
inc = step != 0 ? abs(step) : 1,
dir = inc * (lo < hi ? 1 : -1),
qty = abs(hi - lo) / inc + 1,
len = abs(n) * qty,
seq[] = new int[len];
for (int i = 0; i < len; ++i) seq[i] = i % qty * dir + lo;
return seq;
}
Besides i / qty
vs i % qty
operator difference, local variables qty & len are also calculated differently:
- qty:
abs(n)
vsabs(hi - lo) / inc + 1
- len:
(abs(hi - lo) / inc + 1) * qty
vsabs(n) * qty