細胞問題:
每個細胞有兩種狀態:1為活細胞,0為死細胞,對於每個位置都滿足如下的條件:
如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡
如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活
如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡
如果死細胞周圍正好有三個活細胞,則該位置死細胞復活
public
class solution
int m = board.length;
int n = board[0].length;
for(int i = 0; i < m; i++)
if(board[i][j] == 0 && lives == 3) }}
for(int i = 0; i < m; i++) }}
private
intliveneighbors(int board, int m, int n, int i, int j)
}lives -= board[i][j] & 1;//減去自己
return lives;
}}
下面我對**進行解答:
int lives = 0;
for(int x = math.max(i - 1, 0); x <= math.min(i + 1, m - 1); x++)
}
**解析:
雙重for迴圈就是先迴圈行,再迴圈當前行的列
max(i-1,0)就是取最大值,如果i為0的話就取0,i為2的話的就取1
同理,min(i+1,m-1)就是當前1行和最大行做比較
&為與計算,當前僅當兩個都為1時才為1
for(int i = 0; i < m; i++)
}
**解析:
>>=是把當前值(先轉二進位制)向右移後賦予前面的值
例如7>>=1則是111(二進位制的7)向右移變為11(二進位制的3)則原先的7變為3
懶人讀演算法 一 尋找名人
假設一場聚會有n個人,他們中間可能存在乙個名人。名人的定義是在場的人都認識他,而他卻不認識所有人。已知條件 1.函式knows a,b 告訴你a是否認識b,返回bool值 你要做的事 確定這場聚會是否有名人的存在,如果不存在則return 1 答案 public class solution ext...
懶人讀演算法(七) 旋轉矩陣
給乙個數字n,你要畫出從1到n平方的旋轉矩陣 如n 3,則你要畫出一下的乙個陣列 1,2,3 8,9,4 7,6,5 答案 public class solution 確定1,2,3 rowstart 行開始加1 for int i rowstart i rowend i 確定4,5 colend ...
懶人讀演算法 八 所有子集
給乙個唯一的陣列,返回所有該陣列的子集 例如 nums 1,2,3 返回 3 1 2 1,2,3 1,3 2,3 1,2 答案 public class solution private void recurse list result,int nums,stack path,int positio...