zoukankan      html  css  js  c++  java
  • 名企算法题目总结(1)

    1.带有最小功能的stack

      空间复杂度O(n),时间复杂度O(1)

    2.两个stack实现queue(进,出,清空)

      stack1 负责进,stack2 负责出

      若stack2 没数据,stack1导入到stack2

    3.两个queue实现stack(一直不能理解存在的意义)

     -----    ++++

       queue1负责进(顺序为1,2,3,4),结构为4321,现在要出4,但是只能顺序出1,2,3,4,;1,2,3需要存起来,放到queue2中

       queue2结构为321,现在要出3;1,2需要存起来,放到queue1中

     。。。。

    4. 仅使用递归和栈操作,逆序栈

    1234->4321;

    分析:数据流程表明,必须拿到1,然后栈变成432,然后插入1
      拿到1,栈变成了432 等价于 拿到1,栈变成234

      即我们要解决的问题是如何拿到栈底元素的问题

    1)如何拿到栈底元素(使用递归)

    分析:1234,首先只能拿到4,剩下123(可以递归拿到1,剩余23),插入4
    int get_deep_stack(stack<int>& m_stack) {
    assert(m_stack.empty());
    int val=m_stack.top();
    m_stack.pop();
    if(m_stack.empty()){
    return val;
    }
    else{
    int val2=get_deep_stack(m_stack);
    m_stack.push(val);
    return val2;
    }
    }
    ////////////
    ‘void reverse_stack(stack<int>& m_stack)
    {
    assert(m_stack.empty());
    int val=get_deep_stack (m_stack);
    reverse_stack(m_stack);
    m_stack.push(val);
    }

  • 相关阅读:
    REYES is working now!
    New Caching Mechanism
    Minimum Platform Requirements
    Multithreading Problem with Max SDK
    Bezier Triangles and NPatches
    elvish ray 0.5 beta History
    1.md
    Linux时间同步.md
    好久没写东西了
    从java到c# .net的转变(1)
  • 原文地址:https://www.cnblogs.com/sofard/p/9922974.html
Copyright © 2011-2022 走看看