题解 | #二维数组操作#
二维数组操作
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"); } };