📅  最后修改于: 2023-12-03 15:26:36.065000             🧑  作者: Mango
在算法中,查找下一个更大元素是一种非常常见的问题。在一个数组中,对于每一个元素,都需要找到下一个更大的元素。如果不存在下一个更大的元素,则返回 -1。本文将介绍如何使用 Javascript 编写查找下一个更大元素的程序。
要查找下一个更大的元素,我们可以使用栈来解决。我们从左到右遍历数组中的每一个元素,并将当前元素与栈顶元素进行比较。如果当前元素大于栈顶元素,则将栈顶元素出栈,并将下一个更大元素的值设置为当前元素。重复此步骤,直到当前元素小于栈顶元素,将当前元素入栈。最后,栈中剩余的元素的下一个更大元素都为 -1。
下面是查找下一个更大元素的 Javascript 程序实现代码:
function nextGreaterElement(nums) {
let stack = [];
let res = new Array(nums.length).fill(-1);
for (let i = 0; i < nums.length; i++) {
while (stack.length && nums[i] > nums[stack[stack.length - 1]]) {
let top = stack.pop();
res[top] = nums[i];
}
stack.push(i);
}
return res;
}
下面是一个使用示例:
const nums = [2, 5, 3, 9, 1, 12, 6, 8];
console.log(nextGreaterElement(nums));
// 输出:[ 5, 9, 9, 12, 12, -1, 8, -1 ]
本文介绍了使用栈来查找下一个更大元素的 Javascript 程序实现思路和代码。这是一种非常常见的问题,可以用于解决多种与数组相关的算法问题。