[Lc]509斐波那契数

题目 题解 这题和爬楼梯是一样的,这题与剑指offer10一样,三种方法 1. 递归 这个方法最慢,因为有大量的重复运算,写法最简单,就不写了 时间复杂度

[Lc]面试题09用两个栈实现队列

题目 题解 腾讯的客户端开发就是面的这个。。。,当时还想了半天幸苦想出来了,可惜还是凉 //Your CQueue object will be instantiated and called as such: CQueue* obj = new CQueue(); bj->appendTail(value); int param_2 = obj->deleteHead(); 1. 快存慢取 这个方法

[Lc]105从前序与中序遍历序列构造二叉树

题解 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 递归,先序的首字母是根节点,而中序的根节点区分左右子树,利用这个性质递

[Lc]面试题06从尾到头打印链表

题目 题解 //Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 1. 栈 从头到尾遍历链表,先取数入栈,再从栈中弹出放入数组 时间复杂度$O(n)$,遍历一次数组一次栈

[Lc]面试题05替换空格

题目 题解 1. 双指针法 先统计空格个数,然后扩容,然后用双指针挨个从前往后复制数据,不需要额外空间 时间复杂度$O(n)$,遍历两遍 空间复杂度$O(

[Lc]74搜索二维矩阵

题目 题解 稍微变形的二分查找,其实写法是一样的,主要就是在取mid的时候需要转化一下,开始取二分查找最初的left和right也要注意,还有二

[Lc]240搜索二维矩阵II

题目 题解 可以一行一行的二分查找,但是比较慢,也没有利用这道题矩阵的性质 确定起点很重要,由于这道题矩阵的特殊形式,我们可以将起点定在右上(或者