輸入一個一維數(shù)組园担,要求填入一個mxn的矩陣,填充方式為斜對角線
以下代碼以3x4矩陣為例
//規(guī)律枯夜; 設(shè)每次確定的位置為(i,j)每一次斜行的行號為row(從0開始)弯汰,則有
// 1.i+j=row;
// 2.每一斜行最后一個元素滿足:i==0(row<n-1)或者j==n-1(row>n-1)
// 3.每一斜行第一個元素滿足:i==row(row<m-1)或者i=m-1(row>m-1)
// 4湖雹。斜行中咏闪,i依次減1,j依次加1
function f() {
var arr=[1,2,3,4,5,6,7,8,9,10,11,12];
var index = 0;
var i = 0, j = 0,row = 0;
var m = 3, n= 4;
var b = new Array();
//生成一個二維數(shù)組b
for (let k = 0; k < m; k++) {
b[k] = new Array();
for (let j = 0; j < n; j++) {
b[k][j] = 0;
}
}
while (index < arr.length) {
//判斷是否到達(dá)斜行最后一個元素
if (i < 0 || (j >n-1)) {
row++;
i = (row <= m - 1) ? row : m - 1;
//更新下一斜行的第一個元素位置
j = row - I;
}
b[i][j] = arr[index];
i--;
j++;
index++;
}
return b;}
console.log(f()); // [ [ 1, 3, 6, 9 ], [ 2, 5, 8, 11 ], [ 4, 7, 10, 12 ] ]
完成效果如下圖: