博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白学习之程序员代码面试指南之单调栈结构
阅读量:3897 次
发布时间:2019-05-23

本文共 737 字,大约阅读时间需要 2 分钟。

【题目】

给你一个数组,找出数组中每个数左边离它近的比它大的数和右边离它近的比它大的数
[举例]

输入 arr[]={3 4 1 5 6 2 7}

输出

-1 2
0 2
-1 -1
2 5
3 5
2 -1
5 -1

[代码]

1.O(N^2)

public static int[][] rightWay(int []arr){
//首先创建一个结果 int [][] res=new int[arr.length][2]; //然后开始遍历 for(int i=0;i
=0){
//这里是开始找左边最小的数了 if(arr[cur]

2.O(N)的方法

//O(N)的方法太秒了,思路就是,在栈里面存递增的序列(并且存入的是位置而不是大小)大小只是用来判断的    //当出现不能满足条件的时候,就进行对应的存位置操作,也就是要被弹出去的位置是结果位置,并且栈下面那个位置是结果位置的左边(因为能放入栈    //就说明是除栈顶元素之外,最大且小于栈顶元素的值了,而右边的,就是被触发条件的那个位置    public static int [][]  getNearLessNoRepeat(int[]arr){
//创建数组 int [][]res=new int[arr.length][2]; //创建栈 Stack
stack=new Stack<>(); //开始遍历 for(int i=0;i

转载地址:http://uifen.baihongyu.com/

你可能感兴趣的文章
一个C实现的记日志的函数库
查看>>
C语言简单实现日志功能的的题目
查看>>
C 实现的 日志模块
查看>>
C语言实现简单的分级别写日志程序
查看>>
深入理解HTTP Session
查看>>
理解TCP中的三次握手
查看>>
linux session 浅谈
查看>>
Emacs 中文学习手册-1
查看>>
Emacs学习笔记(1):初学者的学习计划
查看>>
Emacs学习笔记(13):在Emacs中打开pdf
查看>>
Emacs学习笔记(14):在Emacs中使用git
查看>>
Emacs for vim Users---from http://www.crazyshell.org/blog/
查看>>
静态库和动态库链接那些事--http://www.crazyshell.org/blog/?p=50
查看>>
一年成为Emacs高手(像神一样使用编辑器) .--http://blog.csdn.net/redguardtoo/article/details/7222501
查看>>
GNU make 指南
查看>>
配置 vim
查看>>
centos 安装emacs24
查看>>
【转】结构体中Char a[0]用法——柔性数组
查看>>
结构体最后定义一个char p[0];这样的成员有何意义(转)
查看>>
一步一学Linux与Windows 共享文件Samba (v0.2b)
查看>>