题解 | #单调栈#

单调栈

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; } }

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

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

全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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