1.本地文件上传git
为了方便管理项目,在git上创建了我的项目路径,在开始需要配置git ,以及与我本地的eclipse集成,为了方便开发,
因为从未用过git ,找了几篇文章来配置github
将下载git 以及将本地项目传入github配置如下链接 ,十分完整,
https://www.cnblogs.com/cxk1995/p/5800196.html
提交失败
https://blog.csdn.net/jingtingfengguo/article/details/51892864
以及:欢迎阅读我的github https://github.com/will959/flightdiary
如果你是第一次提交的话 。可能会出现以下问题 :
*** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository.
解决方法很简单,只需在当前输入下面两句命令,把引号里的改成自己的邮箱和账号就OK了
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
2.飞行笔记之可拿到MAX与Min值的栈,以及用两个栈实现的队列
本博客的题型来自 左程云大神所著的 算法与数据结构的最优解
1 .实现可以拿到Max以及min值的栈:
完整代码可以参照我的github
栈的特点就是先入后出,因此,当我们想拿到最大/最小值,则需要再压入栈的时候做写手脚
如果想同时实现拿到最小值,最大值的栈,那么则需要用到三个栈,
stackData存储原始数据,stackMin存储最小值,stackMax存储最大值
/** * 压入数据 当压入的数据比min小的时候压入stackMin 当压入的数据比max大的时候压入stackMax * @param num */ public void push(int num){ if(this.stackMin.isEmpty()){ this.stackMin.push(num); } if(this.stackMax.isEmpty()){ this.stackMax.push(num); } if(num <= this.getMin()){ this.stackMin.push(num); } if(num >=this.getMax()){ this.stackMax.push(num); } this.stackData.push(num); }
如上逻辑,这样stackMin.peek() 的时候则就是最小,同理Max在stackMax.peek() 也能取得
2.两个栈实现的队列
原理上 队列是FIFO ,而栈是LIFO , 换句话来说,如果一个队列是 1 2 3 4 5 按顺序入队 , 则 5 4 3 2 1 按顺序入栈的 栈pop的时候 顺序便是队列的顺序。
那么根据思路。如果有两个栈 ,即可达到我们要的效果,一个栈用来记录原始数据 记做stackPush,然后pop进另一个栈记做stackPop,再由stackPop进行最后的输出Pop即可达到效果。
这里有比较注意的逻辑点,
1:当刚开始压入stackPop时,stackPop必须为空。
2:当stackPush要往stackPop放数据就必须要把stackPush里的值,一次性全部压入。
/** * 添加一个元素 */ public void add(int num){ this.stackPush.push(num); } /** * 移除并返问队列头部的元素 如果队列为空,则返回null * @return */ public int poll(){ if(this.stackPop.isEmpty()&&stackPush.isEmpty()){ throw new RuntimeException("你的栈为空"); } if(this.stackPop.isEmpty()){ while(!this.stackPush.isEmpty()){ this.stackPop.push(stackPush.pop()); } } return this.stackPop.pop(); }
如上: 当pop()一次的时候,再次往stackPush栈里压入一个数据的时候,并不会马上压入stackpop栈,而是当staclpop栈pop()为空的时候才会重新的将stackpushi的值压入,这样就算是多次add poll peek 都不会有问题