zoukankan      html  css  js  c++  java
  • 算法-单调栈-1

    题目: 找出一组数中 右边第一个比他大的数 和 左边第一个比他大的数

    维护一个栈底到栈顶 从大到小的栈,当压入的数大于栈顶的数 统计栈顶数的左边最大与右边最大

    当没有压入值的时候 依次弹出 求出左边最大的值

    栈里 底下的数是大于当前数的 上面的数是小于当前数的

    求最近的大于当前值的数是 栈顶到栈底 由大到小

    求最近的小雨当前值的数是 栈顶到栈底 由小到大

     1 package com.example.demo.algorithm.forceAttempt;
     2 
     3 import java.util.Stack;
     4 
     5 public class NearMinNum {
     6     public int[][] getNearMinNum(int[] arr) {
     7         Stack<Integer> stack = new Stack<>();
     8         int[][] res = new int[arr.length][2];
     9         for (int i = 0; i < arr.length; i++) {
    10             while (!stack.isEmpty() && arr[stack.peek()] > arr[i]) {
    11                 Integer pop = stack.pop();
    12                 int p = stack.isEmpty() ? -1 : stack.peek();
    13                 res[pop][0] = p;
    14                 res[pop][1] = i;
    15             }
    16             stack.push(i);
    17         }
    18         while (!stack.isEmpty()) {
    19             Integer pop = stack.pop();
    20             res[pop][1] = -1;
    21             int p = stack.isEmpty() ? -1 : stack.peek();
    22             res[pop][0] = p;
    23         }
    24         return res;
    25     }
    26 }
  • 相关阅读:
    css3发光闪烁的效果
    移动端滚动加载数据实现
    JS生成一个简单的验证码
    百度地图在IOS中不显示
    vue开发神奇vue-devtools的安装
    gulp搭建服务
    webstorm中配置ES6语法
    centos 7 中防火墙的关闭问题
    centos命令
    Cesium加载影像
  • 原文地址:https://www.cnblogs.com/isnotnull/p/15062667.html
Copyright © 2011-2022 走看看