Kotlin或Java數(shù)字串聯(lián)算法

我有一個相同數(shù)字的列表。我需要以這種方式連接數(shù)字:

  • 1和1等于2
  • 2和2等于3
  • 3和3等于4
  • -2和-2等于-1
  • 等等

我怎么做?

例如,[1, 1, 1, 1, 1, 1, 1] = [2, 2, 2, 1] = [3, 2, 1]

? 最佳回答:

相同數(shù)字的列表可以表示為兩個值:

  • 長度n(在您的示例中為7)
  • 編號x(在您的示例中為1)

然后需要將長度n分解為兩個冪的和:

7 = 22 + 21 + 2?

這可以通過查看n的位來有效地完成。

最后,結(jié)果就是冪的列表,其中每個元素增加x

[2 + x, 1 + x, 0 + x]
[2 + 1, 1 + 1, 0 + 1]
[3, 2, 1]

Another example:

input: [-2, -2, -2, -2]
x: -2
n: 4
4 = 22
list of powers:  [2]
answer:  [2 + -2]  or  [0]

Kotlin solution

fun solve(n: Int, x: Int): List<Int> =
    generateSequence(n) { it / 2 }
        .takeWhile { it > 0 }
        .mapIndexedNotNull { i, v ->
            (i + x).takeIf { v % 2 != 0 }
        }.toList().reversed()

solve(7, 1)
// prints: [3, 2, 1]
主站蜘蛛池模板: 国产精品日韩一区二区三区| 中文字幕日韩丝袜一区| 亚洲欧美一区二区三区日产| 无码国产精品一区二区高潮| 久久精品黄AA片一区二区三区| 老湿机一区午夜精品免费福利| 亚洲电影唐人社一区二区| 国产激情一区二区三区| 加勒比精品久久一区二区三区| 精品福利视频一区二区三区| 色欲AV蜜臀一区二区三区| 国偷自产Av一区二区三区吞精| 国产在线观看一区二区三区| 成人精品视频一区二区| 亚洲熟妇无码一区二区三区| 亚洲字幕AV一区二区三区四区| 亚洲日本精品一区二区| 久久一区二区精品| 国产成人无码一区二区在线播放 | 亚洲AV日韩综合一区| 免费无码一区二区三区| 人妻体体内射精一区二区| 久久久久成人精品一区二区| 亚洲综合无码AV一区二区 | 久久久91精品国产一区二区三区| 久久精品一区二区三区中文字幕 | 精品成人一区二区三区四区| 色精品一区二区三区| 一区二区三区中文| 久久精品国产一区二区电影| 国产观看精品一区二区三区| 中文字幕亚洲一区二区va在线| 国产情侣一区二区三区| 亚洲AV乱码一区二区三区林ゆな| 亚洲电影一区二区| 中文字幕AV一区二区三区人妻少妇| 精品永久久福利一区二区| 亚洲AV无码一区二区三区久久精品 | 日本韩国黄色一区二区三区| 国产91精品一区二区麻豆亚洲| 红杏亚洲影院一区二区三区|