剑指Offer
Xyz_zh
这个作者很懒,什么都没留下…
展开
-
【剑指Offer】9.用两个栈实现队列
我们都知道栈是先进后出的,队列是先进先出的,现在要用两个栈去实现一个队列。 解题思路:两个栈分别为A、B,首先将元素全部入栈到A中,然后在将A栈中元素全部出栈,将出栈元素进入B栈中。 比如元素a、b、c进A栈,然后出栈进入到B栈中。 此时若B栈内元素出栈,可以看出其出栈顺序为a、b、c即为最开始的进栈顺序,即实现了先进先...原创 2018-11-25 22:28:26 · 79 阅读 · 0 评论 -
【剑指Offer】11.旋转数组中最小的数字
题目简单明了,就是给你一个不是递减的数组,经过“旋转”后让你求最小的值 这时,你要是想着直接遍历一遍数组不久OK了,那这绝不是面试公司想要考你的东西,这时我们应该想到题目给的条件 数组被分为两个非递减的数组了,这时可以采用二分法,代码非常简单,就是使用二分。 import java.util.ArrayList; public class Solution { public i...原创 2018-11-28 21:06:02 · 71 阅读 · 0 评论 -
【剑指Offer】变态跳台阶
这道题是跳台阶问题的进阶,跳台阶只有两种情况,因此可以直接使用递归,这道题要考虑的情况太多所以用不了递归。 分析:一开始一直顺着跳台阶的递归算法向下向,一直没有想出来。 其实稍微调整以下思路,这道题也不难。 对每个台阶而言,都有跳或者不跳两种情况,只有最后一个台阶例外。所以直接一个公式2^(n-1)即可解决! 想到这里代...原创 2018-11-28 22:19:51 · 96 阅读 · 0 评论 -
【剑指Offer】跳台阶
这道题目类似于斐波那契数列,根据题意,青蛙只能一次跳一级或者跳两级 即 F(n) = F(n-1) + F(n-2),使用递归即可。 public class Solution { public int JumpFloor(int target) { if(target==1) return 1; if(target==2...原创 2018-11-28 21:31:12 · 190 阅读 · 0 评论