栈与队列-2-由两个栈组成的队列
由两个栈组成的队列
题目
实现一个由两个栈组成的队列的接口,支持队列的基本操作:add、poll、peek。
实现思路:
栈:FILO
队列:FIFO
所以可以使用两个栈,正好将顺序调换从而实现类似队列的操作。
具体实现:
一个栈作为押入栈stackPush, 一个栈作为输出栈stackPop。押入时,正常将数据押入至stackPush。然后将数据弹出从stackPop栈中取出,这样栈的数据就可以实现队列的操作。注意: 1.stackPop栈,如果不为空,则不能将stackPush的数据押入栈中,也就是必须要将stackPop栈中的全部数据全部弹出后,才能押入数据。2. 在押入数据时,必须将stackPush栈的全部数据一次性全部押入stackPop栈中。
在押入stackPop的时机,在poll时,如果stackPop为空,则可以全部押入stackPush栈中的数据;在peek时,如果stackPop栈为空,也要将stackPush栈中的数据全部押入道sta ...
栈与队列-1-设计一个有getMin功能的栈
设计一个有getMin功能的栈
题目
实现一个特殊功能的栈,在满足栈的基本功能的条件下,提供返回栈中最小元素的操作。
要求
pop、push、getMin操作的时间复杂度为O(1)
实现思路:
使用两个栈实现需求,一个栈用来保存正常栈的数据信息stackData,一个栈保存每一步的最小值stackMin。由stackData栈实现正常的pop和push,由stackMin栈实现获取当前栈的最小值。
实现方案
方案一
对于stackMin保存每一步最小值,可以使用比较法进行保存,如果当前押入stackData的值小于等于stackMin栈顶的值,则将押入的数据保存stackMin栈中,大于stackMin栈顶的值,只押入stackData中。如果stackMin为空,则双栈都押入。弹出数据时,如果stackData弹出的数据等于当前stackMin栈顶元素,则stackMin栈顶元素也要弹出,即同步弹出。获取当前栈的最小值,直接获取stackMin栈顶元素即可。
方案二
stackMin栈数据重复保存法。将数据押入stackD ...
postgresql数据库安装
postgres安装教程简介目前网上有很多mac安装postgres的教程,完全按照那些教程安装,有的可能会出现各种问题,使得安装失败。
经过自己的多次失败安装后,将在安装过程中的细节整理一二,希望有像我一样困扰的朋友得以解决问题;
本文档解决了mac上安装报错等问题,顺便提供了docker安装过程中的一 些需要注意的细节以及提供了Centos上使用源码安装postgres的步骤;
本人亲测可行,希望可以帮助需要的人。
1. mac安装PostgreSQL12341. 在mac的 系统偏好设置-->用户与群组-->解锁-->点+-->新建用户(注意:此处将用户选为管理员用户,可以不用重启电脑,选普通成员后续操作略有不同)建议新建用户为:postgres 密码自定
122. 下载安装包下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
13. 打开下载的安装包,在安选择安装位置时,选择刚才新建的用户下的一个文件夹内(即 postgres用户下自拟一个文件夹)
...