繁体   English   中英

创建特定数字系列的最简单算法

[英]The easiest algorithm to create a specific series of numbers

var numbers = new ArrayList<Integer>(24);

ArrayList包含一系列递增的数字。 它从第一开始。 对于下一个元素,数字增加 2(每第三个元素增加 1 除外)。

我使用这个算法创建了它。

var number = -1;
for (var i = 1; i <= 24; i++) {
    if (i % 3 != 0) {
        number += 2;
    } else {
        number += 1;
    }
    numbers.add(number);
}

[1, 3, 4, 6, 8, 9, 11, 13, 14, 16, 18, 19, 21, 23, 24, 26, 28, 29, 31, 33, 34, 36, 38, 39]

但是,我不确定它是否是最佳的。

是否可以改进/更改算法以获得更好的效果?

谢谢

所以我想出来了。

var number = -1;
for (var i = 1; i <= 24; i++) {
    number += (i % 3) + Math.abs(Math.signum((i % 3) - 2));
    numbers.add(number);
}

[1, 3, 4, 6, 8, 9, 11, 13, 14, 16, 18, 19, 21, 23, 24, 26, 28, 29, 31, 33, 34, 36, 38, 39]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM