基本思路: 首先用链表来实现栈,然后用map来保存<栈中元素个数,最大元素引用>元素
/**
* 实现一个栈,获取其中最大元素,获取时间复杂度为O(1)
* @MWD
* Date:2013-9-4
*
* Reference: http://www.cnblogs.com/pangxiaodong/archive/2011/08/12/2136260.html
*/
package test;
import java.util.*;
public class MyStack {
/*用链表来实现栈结构*/
class Node{
int data;
Node next;
Node(){}
Node(int data,Node next){
this.data = data;
this.next = next;
}
}
Node head;
int count; //用于记录链表中的元素个数
int maxData;
Node maxNode = new Node();
Map<Integer, Node> map = new HashMap<Integer, Node>();
public MyStack(){
this.count = 0;
}
private void push(int data){
if(count == 0){
this.head = new Node(data,null);
maxData = data;
maxNode= this.head;
count++;
map.put(count,maxNode);
}
else{
实现一个栈,获取其中最大元素,获取时间复杂度为O(1)
最新推荐文章于 2024-09-18 20:44:23 发布
该博客介绍了一个使用链表和映射数据结构实现的栈,可以在常数时间内获取栈中的最大元素。通过维护一个额外的映射,存储每个时刻的最大元素节点,使得在进行push、pop和peek操作时能快速找到最大值。

&spm=1001.2101.3001.5002&articleId=11067765&d=1&t=3&u=c36b4de8961443d7b444ccdd91dc6e65)
692

被折叠的 条评论
为什么被折叠?



