在Scala中合併兩個相鄰索引的最有效方法是什麼?我想到的是一個令人討厭的循環與複製。在Scala中合併兩個相鄰索引的有效方法
例如,有一個緩衝器陣列A,具有長度爲N的新陣列需要被生成,使得對於A(i) = A(i) + A(i+1)
,其中i < N
例如,合併和求和所述第二和第三元件,並生成一個新陣列。 ArrayBuffer(1,2,4,3) => ArrayBuffer(1,6,3)
更新: 我想我想出了一些解決方案,但不喜歡它太多。任何改善建議將不勝感激。
scala> val i = 1 i: Int = 1
scala> ArrayBuffer(1,2,4,3).zipWithIndex.foldLeft(ArrayBuffer[Int]())((k,v)=> if(v._2==i+1){ k(k.length-1) =(k.last+v._1);k; }else k+= v._1)
爲什麼'(1,6,3)'和'不是(3,6,7)'? – zero323
它應該只合並和相鄰的索引,它是第一個也是最後一個元素的情況並不有趣。我在中間合併指數的挑戰。 –