arrays - 返回通过添加数组中的奇数而创建的新数组

标签 arrays kotlin arraylist

我正在尝试从以下数组创建一个数组 arr=[1,2,3,4,5,6,7,8,9] ,它将以这种方式返回数字之和 1+3 = 4 ,3+5=8,5+7=12,7+9=16。所以最终的答案是 newArray =[4,8,12,16]。 我怎样才能实现它。我已经完成了下面的代码,但它不起作用。

   fun main(){

    val sum = arrayOf(1,2,3,4,5,6,7,8,9)
    var first =0;
    var second=0

    for (i in sum.indices){
        if(sum[i]%2!=0){
            first += sum[i]
            if (second!=0){
                println(" $first + $second")
                first=second
            }
        }
    }


}

最佳答案

// val arr = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val arr = arrayOf(1, 3, 5, 6, 7, 8, 2, 4, 9)   // shuffled for test purposes

val result = arr
  // I first posted this line, which was wrong:
  // .filterIndexed { index, _ -> index % 2 == 0 }
  .filterIndexed { _, value -> value % 2 == 1 }
  .windowed(2, 1)
  .map { it.sum() }

println(result)

三个步骤的详细信息:

  • filterIndexed 之后:[1, 3, 5, 7, 9]
  • 窗口化后:[[1, 3], [3, 5], [5, 7], [7, 9]]
  • 在 map 中,每个子列表都会被汇总。

编辑:这个答案的第一个版本通过过滤 index % 2 == 0 巧合地导致了相同的结果,因为OP中的输入数组没有被洗牌。

关于arrays - 返回通过添加数组中的奇数而创建的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72741752/

相关文章:

ruby - 迭代哈希数组并显示在 ruby​​ 的下拉列表中

Java比较方法为Circular Look磁盘算法对数组进行排序

java - 如何在启动 Kotlin 时刷新 Activity ?

android - 为什么使用WorkManager的OneTimeWorkRequest的setInitialDelay()函数,改变设备时间时延迟不生效

android - 如何避免数组列表事件监听器的内存泄漏?

Java arraylist 不兼容类型错误

javascript - angularjs $resource 将查询资源列表转换为对象数组

arrays - C++动态数组的设计

android - 为什么在 Android studio 3.3 的预览选项卡中显示模糊 xml View

java - 从 List 更改为 ArrayList 消除了错误“List 是抽象的,无法实例化?