Stacks and Queues 225, 739

  1. Daily Temperatures
    题目: 给一个整型数组,表示每一天的温度,输出一个整型数组,返回每一天温度比当天温度大的天数的index与当前位置的差值。如果在未来没有比当前天温度更高的时候,返回0

思路:暴力解法:两个指针,一个指针指向当前天的温度,另一个指针遍历剩下天数的温度,记录第一次出现比当前温度高的天数的index, 两者做差即为最后结果

优化: 利用栈结构 还是 队列结构? 栈结构 弹出 和 压入规则是关键 根据温度变化的趋势做判断? 如果温度持续上升 全部为1,持续压入,如果温度一直下降,先压入等待后面的弹出?

  1. Asteroid Collision
    题目:给一个整型数组,绝对值表示小行星的大小,正负号表示小行星的运动方向,相向运动的小行星会发生碰撞,较小的小行星发生爆炸,较大的小行星继续运动,如果两个相撞的小行星大小相等,则两个一起爆炸,返回最后剩余的小行星,输出整型数组

思路: 用一个stack,从左向右遍历输入的数组,记录正数,如果遇到了负数且stack不为空,那么比较当前的负数与stack.peek(), 如果负数大,则将stack.pop(),继续比较,直到stack.peek() > 负数 或 stack为0, 若stack为空,将负数存到最后的res数组当中,若不为空,继续向右遍历,当遍历到数组末端时,将stack当中所有的元素pop() 出来

Q: 数组的大小如何确定? 动态数组?

posted @ 2018-05-24 10:24  AugusKong  阅读(103)  评论(0编辑  收藏  举报