Day Fourteen

一周总结:

队列:先进先出;
栈:先进后出;

队列实现栈:利用多一个队列,存储新的元素,然后将旧队列依次存放到新队列,然后新队列再放回新队列即可。
栈实现队列:利用多一个栈,先将旧栈元素放入新的栈中,然后把新元素放入旧的栈中,最后将新的栈元素依次放入旧栈中即可;
最小栈:利用多一个栈,专门存储当前栈最小的元素,每当原栈新进元素时,最小栈top元素和新元素对比一下,新元素大,最小栈就进top元素,新元素小,最小栈就进新元素;
验证栈序列:队列中存储出栈循序,然后新建一个栈,模拟进栈。当栈顶元素和队列头元素相同时,队列和栈一起pop元素出去,直到栈顶元素不等于队列头元素,或者栈为空时,新元素进栈。
加减计算器
设置一个标志处理加减:’+’ sign=1 ‘-’ sign=-1
处理多位数字:num=num*10+(s[i]-‘0’)
处理优先级‘()’:
1.遇到‘(’,利用栈存储目前计算的值,和现在的加减标志,然后让当前计算的值为0,sign为1
2.遇到‘)’,新计算的值与栈顶的标识符相乘,移除栈顶,然后再加上存储在栈顶的值,一处栈顶;
数组中第K个最大元素
方法一:排序,然后返回数组中第k-1个;
方法二:利用优先队列(升序),队列长度为k。将数组元素依次加入到队列中,当队列满后,对比队列头部元素和新元素,如果新元素比头部元素大,头部元素移除,加入新元素。执行完后,队列第一个就是解。
数据流的中位数
利用两个优先队列存放数据流的中位数,一个降序作为最大队列,一个升序作为最小队列;最小队列的头元素要大于最大队列的头元素,并且两个队列的个数相差不能超过1,这样就能找到中位数。当最小队列个数等于最大队列个数,中位数就等于最小队列头元素加上最大队列头元素之和除以2,否则就等于个数多的那个队列的头元素。
贪心:
分发饼干
让饼干由小到大排序,让孩子胃口大小由小到大排序。然后把饼干从小到大依次尝试是否能满足当前胃口最小的孩子,不能满足就换下一个饼干,直到能为止或者饼干试完了。如果能那就换下个孩子和下个饼干,并记录能满足数量。
摆动序列
记录有多少个波峰和波谷即可,一个记录当前的差值,一个记录上次的差值,一个记录数量。当前的差值为正,上次差值为负或者为零,则数量加一,上次的差值等于当前的差值。当前的差值为负,上次差值为正或者为零,则数量加一,上次的差值等于当前的差值。最后记录的数量即为结果。
移掉K位数字使得当前的数最小
容器依次存放新的元素,如果容器为空,新的元素为0,则不添加。如果新进的元素小于容器最后一个元素,并且K大于零,则移除容器最后一个元素,K减一,直到容器最后一个元素小于新元素或者k为零。如果容器存放完后,K大于零,则依次移除容器最后的元素,直至K为零。
跳跃元素
记录当前最远能到达的距离,即当前数组位置和当前数组能跳跃的距离。如果当前最远能到达的距离大于数组长度,即成功。依次遍历数组,记录更新当前最远能到的距离,如果当前位置超过当前最远能到达的距离,即失败。

啊啊啊,没想到一周总结这么花时间,完了,没有做完,血的教训。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monster_White

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值