剑指offer
Pippen_z
这个作者很懒,什么都没留下…
展开
-
剑指offer:6.旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 解题思路: 旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素。在排序的数组中我们可以用二分查找法实现O(logn)的查找。 S...原创 2019-03-08 14:20:03 · 240 阅读 · 0 评论 -
剑指offer:7. 斐波那契数列
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0),n<=39。 三种解法: 1.递归 看到斐波那契数列的公式,第一想法也许就是递归,这样想着关键代码两三行就搞定了,注意这题的n是从0开始的: class Solution { public: int Fibonacci(int n) { if(...原创 2019-03-08 19:39:55 · 350 阅读 · 1 评论 -
剑指offer:(8-10)斐波那契数列的应用——跳台阶和矩阵覆盖问题
关于斐波那契数列的相关解法在前面已写过,不再多说,主要介绍相关应用的题,其本质均为斐波那契数列,只是“穿了个马甲”而已。 8.跳台阶 问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 a.由题意可知,只有两种跳法,1阶或者2阶。那么假定第一次跳的是一阶,那么剩下还有n-1个台阶,跳法是f(n-1); b.假...原创 2019-03-09 16:35:23 · 280 阅读 · 0 评论