首页 > 编程知识 正文

单调栈算法,两个队列实现栈java

时间:2023-05-05 11:18:07 阅读:34583 作者:3831

package com.test.autimatic; importorg.Apache.poi.ss.formula.functions.t; import java.util.*;/* * @ author 25338 * @版本1.0 * @ date 2021/11/2417336004 * @ description */publicclasssinglequeueandsinglestack { PP mystack--大于当前值的最近元素int[]arr={2,ListInteger list=new ArrayList (; //最终数据mystackintegermystack=new mystack (; for(intI=ARR.Length-1; i=0; I--; {integeradd=mystack.add(arr[I]; list.add (add==空值? -1:add; } system.out.println (列表; system.out.println (---------- ); //myqueue---单调队列,1(3个长度段区间内的最大值int ) ) arr que={ 2,1,3,4,3 }; MyQueueInteger queue=new MyQueue (; 列表integer endmax=new ArrayList (; for(intI=0; i arrQue.length; I ) ) queue.add(arrque[I]; if(I2 ) queue.delete ) arrque[I-3]; }endmax.add(queue.max ); }system.out.println(endmax ); (} /** *单调堆栈---增量(/publicstaticclassmystackkeyextendscomparablekey (专用堆栈密钥堆栈); //保存数据的队列专用密钥最大值; //最大元素/** *构造函数初始化集*/public MyStack () { this.stack=new Stack ); (/**添加数据---主()正输出大于当前值的数据) @paramkey )/publickeyadd如果堆栈不为空,且堆栈顶部元素小于目标值,请删除堆栈顶部元素() stack.isempty(stack.peek ).com Pareto (key )0) { stack.pop; //设定最大值if (stack.isempty ) ) { max=key; (//倒数第二个个数Key end=stack.isEmpty )? null:stack.peek (; //添加元素stack.push(key )的返回结束; (} /** *删除最小元素---通常为* @return */public Key del () if )! stack.isEmpty () ({ return stack.pop ); }else{ max=null; }返回空值; (} /** *获取最大值---通常为* @return */public Key max () ) { return this.max; } } /** *单调队列- -增量*/publicstaticclassmyqueuekeyextendscomparablekey {//数据集合- -专用请求密钥队列publicmyqueue ((this.queue=new linked list ) ); 添加} /** *元素* @ param key */public void add (keykey ) ) /先进先出---数据while (! queue.isempty(queue.peekfirst ).com Pareto (key )0) ) { queue.pollFirst; //如果大于团队领导,则删除团队领导元素} //附加元素queue.addfirst(key ); } /** *末尾元素为最大值* @return */public key max () if (queue.isempty ) ) { return null; (//返回最后一个元素的是最大值return queue.peekLast ); } /** *删除元素* @ param key * @ return */public key delete (keykey ) if (! queue.isempty(queue.peeklast ).comPareto ) key )==0) { return queue.pollLast; //如果最后的数据是当前要删除的数据,则删除}else{ return null; } } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。