Git Product home page Git Product logo

algorithmofdatastructure's Introduction

AlgorithmOfDataStructure

此Repositories主要参考左程云老师《程序员代码面试指南--IT名企算法与数据结构题目最优解》一书进行学习并实现相关例题

此Repositories主要参考左程云老师《程序员代码面试指南--IT名企算法与数据结构题目最优解》一书进行学习并实现相关例题,ReadMe只是简单说明,具体题解在代码中详细描述

算法是硬伤!!!算法也伴随了一个Coder的一生!!!活到老,学到老!!!

第一章 栈和队列

1. 设计一个有getMin功能的栈

提供两种思路:

思路一:

创建两个栈,stackData保存元数据,stackMin保存最小元素,入栈时,判断入栈元素newNum比stackMin栈顶元素是否小,小的话将newNum压入stackMin,否则只将newNum压入stackData

弹出时,先弹出stackData中的元素,然后判断stackData中的元素是否和stackMin的栈顶元素相同,相同的话两个栈同时弹出,否则只弹出stackData元素

代码直通车

思路二:

创建两个栈,stackData保存元数据,stackMin保存最小元素,入栈时,如果入栈元素newNum比stackMin栈顶元素小,则将newNum同时入stackData和stackMin,如果入栈元素newNum比stackMin栈顶元素大,需要将stackMin栈顶元素再次入stackMin栈,类似填充效果

出栈时候,两个栈同时pop元素

代码直通车

2. 设计由两个栈组成的队列

思路:

可以将两个栈的顺序反过来,即可实现先进先出效果;具体使用两个栈,一个栈作为压入栈stackPush,仅压入数据,另一个栈作为弹出栈stackPop,仅弹出数据, 弹出栈stackPop需要将压入栈stackPush的元素压入自己的栈中,保证顺序

但是必须做到两点:

  • 如果stackPush要往stackPop压入数据,必须一次性将stackPush中的元素全部压入stackPop

  • 如果stackPop不为空,stackPush绝对不能向stackPop中压入数据

代码直通车

3. 仅用递归和栈操作实现逆序栈

思路:

将栈stack的栈底元素返回并移除

逆序一个栈

代码直通车

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.