ARTS (第42周)
隔了许久,最近又重温红黑树,发现积累的越多,再去理解会更容易。
Algorithm 算法
变态跳台阶
1 | 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 |
解法1
递归穷举
1 | // 穷举递归 |
解法2
动态规划
1 | // 动态规划 |
解法3
归纳公式
牛客网的TLE用户,https://www.nowcoder.com/profile/2075893
链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387?answerType=1&f=discussion
来源:牛客网
1 | // 看到的别人的解法 Orz 归纳了公式 |
矩形覆盖
1 | 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? |
解法1
穷举递归
1 | // 穷举递归 |
解法2
动态规划
1 | // 动态规划 |
二进制中1的个数
1 | 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 |
解法1
循环每个位,每个位都比对过去
1 | public int NumberOf1(int n) { |
解法2
看到的别人的解法
用户:菩提旭光,https://www.nowcoder.com/profile/837579
这里减一的操作:
1、如果二进制末尾是1 -1就会直接消掉这个1 然后做&运算 就会使n的二进制里的1减少一个
2、如果末尾不是1 就会向前借个1 ,就会使二进制最右边的的1变成0,然后这个1右边的位置都变成1
如1100-1 就会变成1011,然后做&运算 同样会使n的二进制里的1减少一个
所以这里的效果是每次消掉1个二进制里的1
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8?f=discussion
来源:牛客网
public int NumberOf1_copy(int n) {
int count = 0;
int s = 0;
while (n != 0) {
s++;
count++;
n = n & (n - 1);
}
System.out.println("->" + s);
return count;
}
Review 英文文章
https://vuejs.org/v2/guide/components-registration.html
vue 组件的注册
Tip 技巧
每一种数据结构 深入进去就会发现很多特性
就比如二叉树的几种遍历方式
参考
https://blog.csdn.net/liuchaoxuan/article/details/79448956 二叉树的遍历及其用途
Share 分享
https://blog.csdn.net/liuchaoxuan/article/details/79448956 二叉树的遍历及其用途