题解 | #二维数组操作#

二维数组操作

https://www.nowcoder.com/practice/2f8c17bec47e416897ce4b9aa560b7f4

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

interface OperationData {
    m: number;
    n: number;
    x1: number;
    y1: number;
    x2: number;
    y2: number;
    addX: number;
    addY: number;
    x: number;
    y: number;
}

const lines: Array<number>[] = [];

rl.on("line", function (line) {
    lines.push(line.split(" ").map((item) => parseInt(item)));
});

rl.on("close", () => {
    const operationDatas = getOperationDatas();
    isLegalOperations(operationDatas);
});

// 获取操作数据
const getOperationDatas = () => {
    const t = lines.length / 5;
    const operationDatas: OperationData[] = [];
    for (let i = 0; i < t; i++) {
        const baseIndex = i * 5;
        const operationDataItem = {
            m: lines[baseIndex][0],
            n: lines[baseIndex][1],
            x1: lines[baseIndex + 1][0],
            y1: lines[baseIndex + 1][1],
            x2: lines[baseIndex + 1][2],
            y2: lines[baseIndex + 1][3],
            addX: lines[baseIndex + 2][0],
            addY: lines[baseIndex + 3][0],
            x: lines[baseIndex + 4][0],
            y: lines[baseIndex + 4][1],
        };
        operationDatas.push(operationDataItem);
    }
    return operationDatas;
};

// 判断操作是否合法-单个
const isLegalOperation = (operationData: OperationData) => {
    const { m, n, x1, y1, x2, y2, addX, addY, x, y } = operationData;
    // 1.初始化表格是否成功,若成功则返回0, 否则返回-1
    const init = m <= 9 && n <= 9;
    getLegalResult(init);

    // 2 输出交换单元格是否成功
    const changeVal = x1 <= m - 1 && x2 <= m - 1 && y1 <= n - 1 && y2 <= n - 1;
    getLegalResult(changeVal);

    // 3 输出插入行是否成功
    const addRow = addX <= m - 1 && m < 9;
    getLegalResult(addRow);

    // 4 输出插入列是否成功
    const addCol = addY <= n - 1 && n < 9;
    getLegalResult(addCol);

    // 5 输出查询单元格数据是否成功
    const searchVal = x < m && y < n;
    getLegalResult(searchVal);
};

// 判断操作是否合法-多组数据
const isLegalOperations = (operationData: OperationData[]) => {
    for (let i = 0; i < operationData.length; i++) {
        isLegalOperation(operationData[i]);
    }
};

// 获取判断结果
const getLegalResult = (condition: boolean) => {
    if (condition) {
        console.log("0");
    } else {
        console.log("-1");
    }
};

全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务