iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0

Day18 Leetcode Array系列---- Transpose Matrix

tags: 2020IT30

本次題目 Transpose Matrix by JS

題目希望將傳入的矩陣變成轉置矩陣

input1= [
        [1,2,3],
        [4,5,6],
        [7,8,9]
    ]
output1=  [
            [1,4,7],
            [2,5,8],
            [3,6,9]
        ]
input2= [
            [1,2,3],
            [4,5,6]
        ]
output2= [
            [1,4],
            [2,5],
            [3,6]
        ] 

思考路線

  1. 算出有幾個 row 與 column
  2. 準備空陣列裝轉置好的元素
  3. 雙迴圈取值
  4. 把取到的值 行列互換 ex 如果 3 的位置是 (1,2) 就變成 (2,1)
  5. 因為要對陣列做比較,需要先轉換成字串再比較

Coding Time

準備好 row (層數) 與 column(一層中有幾個元素)

在 column 迴圈 (大迴圈) 把空陣列推進 result 為之後轉置好的元素保留空間

在 row 迴圈以 ary[j][i]取值,在交換 row 與 column 放進 result 中

在測試中以字串形式比較 function 產出的結果與 output 符不符合

input1= [
        [1,2,3],
        [4,5,6],
        [7,8,9]
    ]
output1=  [
            [1,4,7],
            [2,5,8],
            [3,6,9]
        ]
input2= [
            [1,2,3],
            [4,5,6]
        ]
output2= [
            [1,4],
            [2,5],
            [3,6]
        ] 
function transpose(ary){
    row = ary.length
    column = ary[0].length
    result = []
    for(let i=0; i<column;i++){
        result.push([])
        for(let j=0; j< row; j++){
            result[i][j] = ary[j][i]
        }
    }
    return result
}

function expect(a,b){
    console.log(JSON.stringify(a) == JSON.stringify(b))
}

expect(transpose(input1),output1)
expect(transpose(input2),output2)

在較新的程式語言或為了統計,數據相關領域設計出的程式語言都有內建轉置矩陣的方法 (ex. python, R ...),目前我還沒有找到 JavaScript 有無這個方法,所以只能用迴圈重新排列

今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀

Daily kitty


上一篇
Day 17 -- Toeplitz Matrix
下一篇
Day 19 -- Squares of a Sorted Array
系列文
菜雞的30天工程師轉職日記--Leetcode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言