C解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

JS解法

处理一系列命令(head add、tail add、remove)操作一个堆栈。
如果命令是head add,可能导致堆栈的顺序被破坏,需要在执行remove命令时进行排序以恢复顺序。
统计排序操作的次数(即需要恢复顺序的操作次数)。
实现逻辑:

使用stackSize记录当前堆栈的大小。
使用needSort标记堆栈是否需要排序:
head add会导致无序,将needSort设为true。
tail add不会影响顺序。
在remove时,如果needSort为true,需要排序(增加排序计数并重置needSort)。
遍历命令数组,根据命令类型更新堆栈状态和排序计数。
输入输出

输入:第一行为命令对数n,接下来是2 * n条命令。
输出:所有remove命令中因排序产生的调整次数。

const readline = require("readline");

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

let commands = [];
let numOps = 0;

rl.on("line", (line) => {
    commands.push(line); // 读取输入
    if (commands.length === 1) {
        numOps = parseInt(commands[0]); // 第一行表示命令对数
    } else if (commands.length === 1 + 2 * numOps) {
        commands.shift(); // 移除第一行命令对数
        console.log(processCommands(commands)); // 处理命令并输出结果
        commands = [];
    }
});

function processCommands(cmds) {
    let stackSize = 0;   // 当前堆栈的大小
    let needSort = false; // 是否需要排序
    let operations = 0;  // 排序操作次数统计

    cmds.forEach((cmd) => {
        if (cmd.startsWith("head add")) {
            // 如果是 `head add`,可能导致堆栈无序
            if (stackSize > 0) needSort = true; // 如果堆栈非空,标记需要排序
            stackSize++; // 增加堆栈大小
        } else if (cmd.startsWith("tail add")) {
            // 如果是 `tail add`,只增加堆栈大小,不影响顺序
            stackSize++;
        } else {
            // 如果是 `remove` 操作
            if (stackSize === 0) return; // 堆栈为空,跳过此命令

            if (needSort) {
                // 如果需要排序,增加排序操作计数
                operations++;
                needSort = false; // 排序完成后重置标记
            }
            stackSize--; // 减少堆栈大小
        }
    });

    return operations; // 返回总排序操作次数
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

注:本文转载自blog.csdn.net的CodeClimb的文章"https://blog.csdn.net/CodeClimb/article/details/144531773"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!