📅  最后修改于: 2023-12-03 15:09:29.980000             🧑  作者: Mango
在开发过程中,经常需要找到一个数组中每个元素的下一个更大元素。对于这种情况,我们可以编写一个PHP程序来寻找下一个更大元素。
为了寻找下一个更大元素,我们可以使用栈来存储元素。我们将第一个元素压入栈中,然后遍历数组中的其他元素。对于每个元素,我们将其与栈顶元素进行比较。如果它比栈顶元素更大,那么我们就找到了下一个更大元素,并将其保存在一个数组中。否则,我们就将其压入栈中。
我们可以通过以下步骤来实现这个过程:
function nextGreaterElement($nums) {
$stack = [];
$result = [];
// 将第一个元素压入栈中
array_push($stack, $nums[0]);
// 遍历数组中的其他元素
for ($i = 1; $i < count($nums); $i++) {
$next = $nums[$i];
while (!empty($stack) && $stack[count($stack) - 1] < $next) {
// 如果该元素比栈顶元素更大,添加到下一个更大元素数组中
array_push($result, $next);
array_pop($stack);
}
// 将该元素压入栈中
array_push($stack, $next);
}
// 处理栈中剩余元素
while (!empty($stack)) {
array_push($result, -1);
array_pop($stack);
}
// 反转结果数组
return array_reverse($result);
}
// 示例
$nums = [4, 5, 2, 25];
$result = nextGreaterElement($nums);
print_r($result); // 输出:Array ( [0] => 25 [1] => -1 [2] => 25 [3] => -1 )
通过以上程序,我们可以轻松地寻找任意数组中每个元素的下一个更大元素。如果您在实现过程中遇到问题,请在下方评论区留言,我将为您解答。