volatile 可保证可见性。synchronized 也能够保证可见性,对一个变量执行 unlock 操作之前,必须把变量值同步回主内存。final 关键字也能保证可见性:被 final 关键字修饰的字段在构造器中一旦初始化完成,并且没有发生 this 逃逸(其它线程可以通过 this 引用访问到初始化了一半的对象),那么其它线程就能看见 final 字段的值。
@@ -521,11 +537,11 @@ public int JumpFloor(int n) {
```java
publicintJumpFloor(intn){
if(n<=1)
if(n<=2)
returnn;
intpre2=0,pre1=1;
intresult=0;
for(inti=1;i<=n;i++){
intpre2=1,pre1=2;
intresult=1;
for(inti=2;i<n;i++){
result=pre2+pre1;
pre2=pre1;
pre1=result;
...
...
@@ -613,6 +629,8 @@ public int RectCover(int n) {
因为 h 的赋值表达式为 h = m,因此循环体的循环条件应该为 l < h,详细解释请见 [Leetcode 题解](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE) 二分查找部分。