• 剑指offer---20---包含min函数的栈


     
    题意
    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
     
    分析
    ---首先,自定义一个栈,栈内部使用ListNode链表来实现,同时维护一个length长度。
    ---其次,在栈中为了实现min,需要定义两个栈,其中一个栈专门用来保存最小的值。
     
    代码
    import java.util.Stack;
    public class Solution {
        private MyStack<Integer> minStack = new MyStack<Integer>();
        private MyStack<Integer> dataStack = new MyStack<Integer>();
        
        public void push(int node) {
            dataStack.push(node);
            if(minStack.length==0)minStack.push(node);
            else{
                if(minStack.head.data<node)minStack.push(minStack.head.data);
                else minStack.push(node);
            }
        }
        
        public void pop() {
            ListNode<Integer> temp = dataStack.head;
            dataStack.head = dataStack.head.nextNode;
            ListNode<Integer> min = minStack.head;
            minStack.head = minStack.head.nextNode;
        }
        
        public int top() {
            return dataStack.head.data;
        }
        
        public int min() {
            return minStack.head.data;
        }
    }
     
    //使用泛型去定义节点和栈,内部使用链表和头结点。
    class ListNode<K>{
        K data;
        ListNode<K> nextNode;
    }
    class MyStack<K>{
        public ListNode<K> head;
        public int length;
        public void push(K data){
            ListNode<K> node = new ListNode<K>();
            node.data = data;
            node.nextNode = head;
            head = node;
            length++;
        }
        public K pop(){
            if(head==null)return null;
            ListNode<K> temp = head;
            head = head.nextNode;
            length--;
            return temp.data;
        }
    }
     
  • 相关阅读:
    常见算法:C语言求最小公倍数和最大公约数三种算法
    java数据结构
    创建与删除索引
    Delphi 2007体验!
    wxWindows
    Android中WebView的相关使用
    IAR FOR ARM 各版本号,须要的大家能够收藏了
    [AngularJS] $interval
    [ES6] 10. Array Comprehensions
    [ES6] 09. Destructuring Assignment -- 2
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9377158.html
Copyright © 2020-2023  润新知