乙個迴圈實現新陣列n位值是老陣列前n位的和

2021-07-28 15:27:24 字數 904 閱讀 7954

首先先解釋一下題目,什麼叫做新陣列n位值是老陣列前n位的和,下面舉兩個例子就明了了,

老陣列:var old = [1,2,3,4]

新陣列:var new = [1,3,6,10]

就是:

1. 新陣列的第一位等於老陣列的第一位new[0] = old[0]

2. 新陣列的第二位等於老陣列的前兩位之和new[1] = old[0] + old[1]

3. 新陣列的第三位等於老陣列的前三位之和new[2] = old[0] + old[1] + old[2]

4. ……

相信很多人的第一反應都是迴圈套迴圈,如下:

var oldarray = [1,2,3,4];

var newarray = ;

for(var i = 1; i <= oldarray.length; i++)

newarray.push(newarrayeach);

}console.log(newarray);//輸出結果[1, 3, 6, 10]

那麼有沒有一些簡單方法來實現呢?

下面是僅使用乙個迴圈來實現:

var oldarray = [1,2,3,4];

var newarray = [0];

for (var i = 0; i < oldarray.length; i++)

newarray = newarray.slice(1);

console.log(newarray);//輸出結果[1, 3, 6, 10]

下面這種效率是不是比上面哪種方法高多了,很多方法要靈活運用,才能寫出更好的**。

不使用迴圈,判斷乙個數是否是2的N次方

對於判斷乙個數是否為2的n次方問題,通常想到的最為直接的辦法就是對這個數不斷對2取餘,為0就將該數變為該數除以2,直到最後該數為1為止。void judge int n printf no n return 不過上面的方法並不是較好的方法,其實還有更為簡潔高效的方法 乙個整數,若是2的n次方,有沒有...

判斷乙個數是n的倍數 n 2,3,4,5,9

判斷乙個非零自然數是否是2的倍數的方法 這個數末位上的數字是否是偶數即個位上是0 2 4 6 8的數是2的倍數。判斷乙個非零自然數是否是3的倍數的方法 各個數字上的數字和是否是3的倍數 各個數字上數字遇3就劃掉,最後剩餘的數就是除以3的餘數!判斷乙個非零自然數是否是4的倍數的方法 這個數的末二位上的...

陣列 如何把乙個陣列迴圈右移K位

假設要把陣列12345678右移2位,變為78123456。比較移位前後陣列序列的形式,不難看出,其中有兩段序列的順序是不變的,即就是 78 和 123456,可以把這兩段看做兩個整體,右移k位就是把陣列的兩部分交換一下。時間複雜度為o n 步驟 1 逆序陣列子串行123456,陣列序列的形式為65...