没区别。
写成16进制的形式,比较方便转换2进制。比如0xAB,一眼看出就是0b10101011,写成十进制的171就不好转二进制
没有区别,因为1=0x01
从功能角度是一样的,从代码可读性角度,0x01更好。
数值上是没有区别的,1是10进制表示,0x01是16进制表示,它们都是2进制的0000 0001
但是0x01可读性上更好一些,能够让你一眼看出这是在做2进制的与运算
否则写成n & 1很容易和n && 1搞混掉,1容易被理解成bool量
拿求f[5] 举例
通过图会发现,初始方法中存在很多重复计算,因为为了改进,就把计算过的保存下来。
那么用什么保存呢?一般会想到map, 但是此处不用牛刀,此处用数组就好了。
public class Solution {
public int Fibonacci(int n) {
int ans[] = new int[40];
ans[0]=0;
ans[1]=1;
for(int i=2;i<=n;i++){
ans[i]=ans[i-1]+ans[i-2];
}
return ans[n];
}
}
时间复杂度:
空间复杂度: