iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Software Development

用JS來刷刷HackerRank系列 第 19

(20)HackerRank-Interview-Arrays-2D Array - DS(javaScript ans)

  • 分享至 

  • xImage
  •  

題目
2D Array - DS
舉例輸入

1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0

舉例輸出

19

解析
這題會給一個arr.lenght=6,arr[i].length=6的二維陣列
(但我還是習慣把程式寫活一點)
計算此二維陣列展開後把"工"放進去的最大和
那麼我們只要知道此列會被檢查幾次,因此"工"要右移幾次
並且計算出有幾行,需要迴圈幾次,取得最大的數

function hourglassSum(arr) {
    //至少最下面要留兩排,陣列從0開始數
    let checkRow = (arr.length - 2 - 1);
    let checkCol = (arr[0].length - 2 - 1)
    //檢查開始
    // let max = 0;//如果答案為負就會出問題
    let max = []
    for (let row = 0; row <= checkRow; row++) {
        for (let col = 0; col <= checkCol; col++) {
            let sum = 0;
            sum = arr[row][col] + arr[row][col + 1] + arr[row][col + 2];
            sum += arr[row + 1][col + 1];
            sum += arr[row + 2][col] + arr[row + 2][col + 1] + arr[row + 2][col + 2];
            //這個寫法如果答案為0會出問題
            // max = (max || sum) > sum ? max : sum;
            max.push(sum);
        }

    }
    return max.length > 0 ? Math.max(...max) : 0;
}
 

上一篇
(19)HackerRank-Interview -Warm-up Challenges-Repeated String(javaScript ans)
下一篇
(21)HackerRank-Interview-Arrays-Left Rotation(javaScript ans)
系列文
用JS來刷刷HackerRank29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言