HackerRank Js-Week4 2. Left Rotation

    HackerRank

    A left rotation operation on an array of size n shifts each of the array’s elements 1 unit to the left. Given an integer, d, rotate the array that many steps left and return the result.

    一個大小為 n 的陣列進行左旋轉操作,將陣列中的每個元素向左移動 1 個單位。
    給予一個整數 d,旋轉陣列剩餘的步數並回傳結果。
    

    Example 1:

    d = 2
    arr = [1, 2, 3, 4, 5]
    
    After 2 rotations, arr' = [3, 4, 5, 1, 2].
    

    solution:
    運用 javascript 的原生語法函式將陣列元素進行指定位置的切割,
    最後用 concat 來重新組合兩個陣列。

    Code 1: BigO(n)

    'use strict';
    
    const fs = require('fs');
    
    process.stdin.resume();
    process.stdin.setEncoding('utf-8');
    
    let inputString = '';
    let currentLine = 0;
    
    process.stdin.on('data', function(inputStdin) {
        inputString += inputStdin;
    });
    
    process.stdin.on('end', function() {
        inputString = inputString.split('\n');
    
        main();
    });
    
    function readLine() {
        return inputString[currentLine++];
    }
    
    /*
     * Complete the 'rotateLeft' function below.
     *
     * The function is expected to return an INTEGER_ARRAY.
     * The function accepts following parameters:
     *  1. INTEGER d
     *  2. INTEGER_ARRAY arr
     */
    
    function rotateLeft(d, arr) {
        // Write your code here
        const array = [...arr]
        const fisrtPart = array.slice(0, d)
        const secondPart = array.slice(d)
        return secondPart.concat(fisrtPart)
    }
    
    function main() {
        const ws = fs.createWriteStream(process.env.OUTPUT_PATH);
    
        const firstMultipleInput = readLine().replace(/\s+$/g, '').split(' ');
    
        const n = parseInt(firstMultipleInput[0], 10);
    
        const d = parseInt(firstMultipleInput[1], 10);
    
        const arr = readLine().replace(/\s+$/g, '').split(' ').map(arrTemp => parseInt(arrTemp, 10));
    
        const result = rotateLeft(d, arr);
    
        ws.write(result.join(' ') + '\n');
    
        ws.end();
    }
    

    FlowChart:
    Example 1

    d = 2
    array = [1, 2, 3, 4, 5]
    
    fisrtPart = array.slice(0, d) //array.slice(0, 2) [1, 2]
    secondPart = array.slice(d) //array.slice(2) [3, 4, 5]
    
    return secondPart.concat(fisrtPart) //[3, 4, 5, 1, 2]