https://github.com/nxlogn/leetcode-hot-100/tree/main/huawei/2025
const rl = require('readline').createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
try {
// 读取一行,球员评分
let line1 = await readline();
// 读取第二行, k 值
let line2 = await readline();
// 数据解析和校验
const tokens = line1.trim().split(/\s+/);
const players = [];
// 正则校验: 必须是纯数字
const validNumRegex = /^\d+$/;
for (const t of tokens) {
if (!validNumRegex.test(t)) {
console.log("error");
return;
}
players.push(Number(t));
}
if (!validNumRegex.test(line2.trim())) {
console.log("error");
return;
}
const k = Number(line2.trim());
const n = players.length;
// 逻辑边界校验
if (k > n || k <= 0) {
return;
}
// 贪心算法 + 单调栈
const stack = [];
for (let i = 0; i < n; i++) {
const currentVal = players[i];
const remainingPlayers = n - 1 - i; // 当前元素之后还剩多少人
// 核心逻辑:
// 栈不为空
// 当前球员比栈顶球员强
// 安全性检查,如果踢掉栈顶,剩下的加上栈里留下的,能否凑齐 k 个人?
while (stack.length > 0 && currentVal > stack[stack.length - 1] && (stack.length + remainingPlayers) >= k) {
stack.pop();
}
// 如果还没凑齐 k 人,加入
if (stack.length < k) {
stack.push(currentVal);
}
}
// 输出
console.log(stack.join(' '));
} catch (e) {
console.log("error");
}
}();



京公网安备 11010502036488号