构建二叉树,根据前序和中序遍历的结果构建一个二叉树 。
剑指 Offer 09. 用两个栈实现队列
class CQueue {public:stack
使用两个栈实现队列,无非就是一个栈用作队列存储(),另一栈用作队列输出(),每次要出队的时候就让存储栈()将所有数据pop到输出栈()上,然后输出输出栈的栈顶元素,最后再将剩下的元素pop回存储栈(),每次都如此就完成两个栈实现一个队列了 。
剑指 Offer 10- I. 斐波那契数列
class Solution {public:int fib(int n) {if (n < 2) {return n;}int f1 = 0, f2 = 1;for (int i = 0; i < n - 1; i++) {int t = f1 % 1000000007;f1 = (f1 + f2) % 1000000007;f2 = t;}return (f1 + f2) % 1000000007;}};
用两个存储F(N - 1)和F(N - 2)就行了,注意题上说的答案要取余 。同时递归也可以写,但是递归实在是太慢了,会超时 。
剑指 Offer 10- II. 青蛙跳台阶问题
class Solution {public:int numWays(int n) {if (n == 0 || n == 1) {return 1;}int f1 = 0, f2 = 1;for (int i = 0; i < n; i++) {int t = f1 % 1000000007;f1 = (f1 + f2) % 1000000007;f2 = t;}return (f1 + f2) % 1000000007;}};
这不就是斐波那契的变形嘛,难点就在于你啥时候能理解它的原理,哎嘘,就看这个大哥的讲解吧 。
剑指 Offer 11. 旋转数组的最小数字
class Solution {public:int minArray(vector
只要右边比中间大,他就是顺序的,所以我们可以只通过右边对其进行判断 。right比mid大说明mid到right都是顺序的就不用看了,令right到mid位置就行 。right比mid小说明mid到right之间经过了旋转,则应该令left到mid位置,right不变继续进行查找 。还有一种最重要的情况就是right和mid是相等的,那么我们就要对其进行去重处理,就得让right– 。
剑指 Offer 12. 矩阵中的路径
class Solution {public:bool exist(vector
- 《窥情》未删减版在哪儿在线观看
- android应用程序开发!在字节跳动我是如何当面试官的,威力加强版
- 初一上册数学 初一上册数学书电子版
- 最值得普通人学的编程语言是哪个?
- win10企业版ltsc密钥 win10企业版ltsc有录屏功能吗
- 造梦西游4好号和密码真的90级 造梦西游4好号和密码真的手机版
- iqooneo7竞速版屏幕尺寸
- 一九四二电影免费完整版在哪儿在线观看
- 偷窥课程完整版是什么电影
- 医用口罩和普通口罩有什么区别