首先先解釋一下題目,什麼叫做新陣列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...