insert, delete, max in O(1)

后端 未结 8 1146
北海茫月
北海茫月 2020-11-29 17:42

Can someone tell me which data structure supports insert/delete/maximum operation in O(1)?

8条回答
  •  借酒劲吻你
    2020-11-29 18:21

    Below program keeps track of max elements in stack in such a way that any point of time the top pointer would give us the max in the stack : So, max would be O(1), and we can find max by max[N]

    ITEM   MAX
    
    +---+  +---+
    | 1 |  | 1 |
    | 10|  | 10|
    | 9 |  | 10|
    | 19|  | 19| <--top
    +---+  +---+
    

    Java Program:

    public class StackWithMax {
    
    private int[] item;
    private int N = 0;
    private int[] max;
    
    public StackWithMax(int capacity){
        item = new int[capacity];//generic array creation not allowed
        max = new int[capacity];
    }
    
    public void push(int item){
        this.item[N++] = item;
        if(max[N-1] > item) {
            max[N] = max[N-1];
        } else {
            max[N] = item;
        }
    }
    
    public void pop() {
        this.item[N] = 0;
        this.max[N] = 0;
        N--;
    }
    
    public int findMax(){
        return this.max[N];
    }
    public static void main(String[] args) {
        StackWithMax max = new StackWithMax(10);
        max.push(1);
        max.push(10);
        max.push(9);
        max.push(19);
        System.out.println(max.findMax());
        max.pop();
        System.out.println(max.findMax());
    
    
    }
    
    }
    

提交回复
热议问题