不用单调栈用Java实现:输入一个整数值序列,要求在返回一个整数序列,内容是和当前的数值下一个更大数值出现在几个以后。 程序的输入只有一个命令行参数,是以逗号分隔的一组整数,代表用于分析变化趋势的数值。
时间: 2023-05-18 22:05:55 浏览: 80
用Java语言实现栈的功能
4星 · 用户满意度95%
以下是Java实现的代码:
import java.util.*;
public class NextGreaterNumber {
public static void main(String[] args) {
String[] input = args[0].split(",");
int[] nums = new int[input.length];
for (int i = 0; i < input.length; i++) {
nums[i] = Integer.parseInt(input[i]);
}
int[] result = nextGreaterNumber(nums);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i] + " ");
}
}
public static int[] nextGreaterNumber(int[] nums) {
int[] result = new int[nums.length];
Stack<Integer> stack = new Stack<>();
for (int i = nums.length - 1; i >= 0; i--) {
while (!stack.isEmpty() && stack.peek() <= nums[i]) {
stack.pop();
}
result[i] = stack.isEmpty() ? 0 : stack.peek() - i;
stack.push(nums[i]);
}
return result;
}
}
对于输入序列 [1,2,3,4,5],输出序列为 [1,1,1,1,0],因为对于每个数,下一个更大的数都是在它后面出现的,所以输出都是1,最后一个数没有更大的数,所以输出为0。
阅读全文