题解 | #单调栈#

单调栈

http://www.nowcoder.com/practice/ae25fb47d34144a08a0f8ff67e8e7fb5

import java.util.*;

public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int一维数组 * @return int二维数组 */ public int[][] foundMonotoneStack (int[] nums) { // write code here
int len = nums.length; int[][] matrix = new int[len][2]; Stack stack = new Stack<>(); for(int i = 0;i < len;i ++){ if(stack.isEmpty()) { stack.push(i); matrix[i][0] = -1; }else if(nums[stack.peek()] < nums[i]){ matrix[i][0] = stack.peek(); stack.push(i); }else{ while(!stack.isEmpty() && nums[stack.peek()] >= nums[i]){ stack.pop(); } if(stack.isEmpty()) { stack.push(i); matrix[i][0] = -1; }else{ matrix[i][0] = stack.peek(); stack.push(i); } } } stack.clear(); for(int i = len -1;i >= 0;i --){ if(stack.isEmpty()) { stack.push(i); matrix[i][1] = -1; }else if(nums[stack.peek()] < nums[i]){ matrix[i][1] = stack.peek(); stack.push(i); }else{ while(!stack.isEmpty() && nums[stack.peek()] >= nums[i]){ stack.pop(); } if(stack.isEmpty()) { stack.push(i); matrix[i][1] = -1; }else{ matrix[i][1] = stack.peek(); stack.push(i); } } } return matrix; } }

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

03-03 23:42
复旦大学 Java
_无论云泥意贯一:把复旦大学放前面,山东大学放后面,并且在两个大学后面标注985(用一些显眼的颜色标注)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务