![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
Hunter_first
做什么事情都要善始善终,不得半途而废
展开
-
跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析:典型的斐波拉契数列,跳1级,1种跳法;2级,2种跳法;3级,三种跳法;4级,5种跳法;5级,8中跳法。。。。如此,利用数学归纳法可得一条斐波拉契数列 思路:递归 数学公式: JAVA代码: public class Solution {原创 2015-08-16 01:48:06 · 353 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。 分析:栈是先进后出结构,队列是先进先出结构,但是这里有两个栈,因此,Push操作时,我假设用stack1来存储,出栈时即Pop操作,将stack1的元素出栈然后入栈stack2,然后再stack2出栈,但是出栈时要考虑stack2是否为空,如果为空则执行之前的Pop操作,如果不为空,那么就不用s原创 2015-08-16 21:09:22 · 381 阅读 · 0 评论 -
斐波拉契数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 分析:看到这种类型,一般会想到使用递归实现,这样比较简单,但是不能被AC掉,因为超时,所以只有采用非递归算法 思路:采用的方法是循环完成前后两项相加 C++代码: class Solution { public: int Fibonacci(int n) { int a = 1原创 2015-08-16 23:27:37 · 501 阅读 · 0 评论 -
从尾到头打印链表
题目:输入一个链表,从尾到头打印链表每个节点的值。 分析:由于是从尾到头这种的打印方式,所以我首先想到的是用栈这种先近后出的结构存储遍历结果 思路:对链表进行遍历,每次遍历结果存入栈中 C++代码: /** * struct ListNode { * int val; * struct ListNode *next; *原创 2015-08-16 20:35:57 · 298 阅读 · 0 评论 -
反转链表
题目:反转链表 分析:拿到这种题,一般先要知道链表这种结构,然后知道怎样遍历链表,这题比较简单,题眼在反转上,那么我第一个想到用栈这种数据结构来存储 思路:依次遍历链表将元素存入栈中,然后出栈,就得到相应的链表反转后的数据了 C++代码: /* struct ListNode { int val; struct ListNode *next; ListNod原创 2015-09-08 16:04:29 · 384 阅读 · 0 评论