JavaScript 双指针法求一个或两个有序数组的合并数组(不能谁用原生sort、concat等函数)

题目:请实现一个函数,功能为合并两个升序数组为一个升序数组

输入:输入有多个测试用例,每个测试用例有1-2行,每行都是以英文逗号分隔从小到大排列的数字

输出:输出一行以英文逗号分隔从小到大排列的数组

牛客网:https://www.nowcoder.com/practice/20c8731629b64109825595c3d349d2fc?tpId=98&tqId=32849&tPage=2&rp=2&ru=%2Fta%2F2019test&qru=%2Fta%2F2019test%2Fquestion-ranking

编译器:node.js

代码以及分析


//Break on start in Main.js:1
//多行输入(一行以上),假若需要知道到底输入几行,才能判断做什么操作,可以使用以下的方法
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output:process.stdout
});
const inputArr = [];
rl.on('line', function(line){
    inputArr.push(line.trim());
});
rl.on("close", function () {
    if(inputArr.length === 1) {
        //输入为一行时,直接输出
        console.log(inputArr[0]);
    }
    if(inputArr.length ===2){
        //输入为两行时
        var arrayNum = [];
        var colsArr = [];
        for(var i = 0; i  array[j_array]){
            //左数组的某项比较大
            result[result.length] = array[j_array];
            j_array++;
        }
        if(arr[i_arr] < array[j_array]){
            result[result.length] = arr[i_arr];
            i_arr++;
        }
        if(arr[i_arr] === array[j_array]){
            //两项相同时,只加入一个,同时指针往右移动
            result[result.length] = arr[i_arr];
            i_arr++;
            j_array++;
        }
    }
    //执行以上操作遍历完其中一个数组之后,将另外一个数组的数据加入到rusult结果中
    while(i_arr < arr.length){
        result[result.length] = arr[i_arr];
        i_arr++;
    }
    while(j_array < array.length){
        result[result.length] = array[j_array];
        j_array++;
    }
    return result;
}

 

你可能感兴趣的:(#,双指针,javascript,node.js)