懶人讀演算法 二 細胞問題

2021-08-09 05:58:37 字數 1033 閱讀 8634

細胞問題:

每個細胞有兩種狀態: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...