![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习
white先生
分享个人学习成长的经验总结或笔记。如造成侵权实属无意,深表歉意,烦请告知。
Mrxiao93@outlook.com
展开
-
剑指offer—旋转数组最小的数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目思路非递减数组旋转之后最小值,也就是寻找分界点,分界点前后都是非递减数组,分界点后面的非递减数组比分界点前面的...原创 2018-04-22 17:16:29 · 99 阅读 · 0 评论 -
剑指offer—斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39题目思路该题考的是斐波拉契数列,我们需要弄懂斐波拉契数列元素之间的关系。及后一个元素为前两个元素之和,数列前两个数等于1.由于题目要求n《=39.则开了一个40的数组(第零位不用)。通过while循环,计算第n位斐波拉契数列的值。思路优化:前面的思路需要维护一个数组,但在计算后续数值时只需要前面两...原创 2018-04-22 17:18:07 · 122 阅读 · 0 评论 -
剑指offer—青蛙跳台阶(最多跳n级)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目思路该题看起来比跳两级台阶的青蛙厉害多了,但也可受两级台阶青蛙的启示(第n级台阶的方法必定跟跳到前面台阶的次数有关系)。果不其然,第n级台阶的方法为前n级台阶方法的累加。即f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + ...原创 2018-04-22 17:21:23 · 718 阅读 · 0 评论 -
剑指offer—青蛙跳台阶(最多跳两级)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目思路该题是一个隐性的斐波拉契数列(前两个数值不同),可用找规律的方法发现。究其原理,如给出为n,因为青蛙只有跳一步和跳两步的选着,则青蛙只可能从n-1的位置或n-2的位置跳过来,则只需将到达n-1位置的选择数加n-2的选择数即可。因为n-1和n-2保存了到达相应位置的次数。则该问题迎刃而解。代码p...原创 2018-04-22 17:19:36 · 167 阅读 · 0 评论 -
剑指offer系列题(13-20)
13.调整数组顺序使奇数位于偶数题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目思路该题有很多的解法,这里提的是一种比较容易想到的思路,及类似于冒泡排序。当前面是为偶数后面是为奇数则交换顺序。当然该题还包括了插入排序,快速、归并等各种方法,在时间复杂度上有优势,为...原创 2018-05-06 21:40:46 · 133 阅读 · 0 评论 -
剑指offer系列题(21-25)
21.栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题目思路如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹...原创 2018-05-06 21:46:55 · 125 阅读 · 0 评论