我太菜了

喜欢写Hello World的未来程序员.

变态跳台阶

你快乐吗?

变态跳台阶 C++,还是动态规划。 有一种延续上一个题的笨方法,就是f(n) = f(n-1) + f(n-2) + ... f(2) + f(1) + 1,双重循环复杂度O(n)。 其实如果仔细看的话就发现一个规律了,如下规律: f(1) = 1, f(0) = 1 f(2) = 1 = f(1) + 1 = 2 * f(1) f(3) = f(2) + f(1)...

反转链表

你快乐吗?

反转链表 原地反转 Tips:链表题都可以自己先构造一个前置节点指向第一个结点,这样很多题会容易很多。。。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ...

包含min函数的栈

你快乐吗?

包含min函数的栈 C++,顺序表实现,4ms。 class Solution { public: void push(int value) { if (stk.empty()) { min_value = value; min_i = 0; } else if (value < min_val...

从尾到头打印链表

你快乐吗?

从尾到头打印链表 倒序打印链表,第一反应就是用栈了。可是想到万一不让用呢?所以递归应该是更好的办法。。。 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * ...

从上往下打印二叉树

你快乐吗?

从上往下打印二叉树 C++,层序遍历。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: ve...

二进制中1的个数

你快乐吗?

二进制中1的个数 C++,其实考点中已经说了是位运算了,所以应该首先考虑利用位运算。 按位与(&)运算符 顾名思义,就是对操作数的二进制进行与运算,比如2&1,结果就是0,因为二进制计算10&01就是00嘛。 n&n-1做了什么 我们举个例子,假设n = 10,n的二进制为1010,n - 1即9,二进制为1001,此时我们再用1010&10...

二维数组中的查找

你快乐吗?

二维数组中的查找 思路参考:剑指Offer面试题:2.二维数组中的查找 对于题意提出的有规律的数组,可以有如下思路: 从二维数组的左下角开始查找; 如果当前位置大于target,则说明target不可能在当前位置所在行或所在行的下方,将范围缩小到当前所在行的上方,即将查找范围矩阵的行数缩小一行m--; 如果当前位置小于target,则说明target不可能在当前...

二叉树的镜像

你快乐吗?

二叉树的镜像 C++,前序遍历,dfs。 对于每个结点,交换它的两个儿子结点。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solu...

二叉树的深度

你快乐吗?

二叉树的深度 C++,树深度,递归。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: int...

二叉树中和为某一值的路径

你快乐吗?

二叉树中和为某一值的路径 C++,简单的dfs,其实想不清楚为什么没有排序也能过。。。 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ cl...