LeetCode:Game of Life
2015-10-08 16:12
316 查看
思路:用count记录每个ceil四面八方live ceil的数目,然后根据count的值决定当前ceil是1还是0
注意:这里要用一个新数组newBroad来保存当前ceil的新值,不能在broad上进行
代码:
public class Solution {
public void gameOfLife(int[][] board) {
int m = board.length; //行数
int n = board[0].length; //列数
int[][] newBoard = new int[m]
;
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
int count = 0; //周围活细胞的数目
if(j+1 <= n-1) {
if(board[i][j+1] == 1) count++; //右
if(i-1 >=0 && board[i-1][j+1] == 1) count++; //右上
if(i+1 <= m-1 && board[i+1][j+1] == 1) count++; //右下
}
if(j-1 >= 0) {
if(board[i][j-1] == 1) count++; //左
if(i-1 >= 0 && board[i-1][j-1] == 1) count++; //左上
if(i+1 <= m-1 && board[i+1][j-1] == 1) count++; //左下
}
if(i-1 >= 0 && board[i-1][j] == 1) count++; //上
if(i+1 <= m-1 && board[i+1][j] == 1) count++;
if(board[i][j] == 1 && (count < 2 || count > 3))
newBoard[i][j] = 0;
if(board[i][j] == 0 && count == 3)
newBoard[i][j] = 1;
if(board[i][j] == 1 && (count == 2 || count == 3))
newBoard[i][j] = 1;
}
}
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
board[i][j] = newBoard[i][j];
}
}
注意:这里要用一个新数组newBroad来保存当前ceil的新值,不能在broad上进行
代码:
public class Solution {
public void gameOfLife(int[][] board) {
int m = board.length; //行数
int n = board[0].length; //列数
int[][] newBoard = new int[m]
;
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
int count = 0; //周围活细胞的数目
if(j+1 <= n-1) {
if(board[i][j+1] == 1) count++; //右
if(i-1 >=0 && board[i-1][j+1] == 1) count++; //右上
if(i+1 <= m-1 && board[i+1][j+1] == 1) count++; //右下
}
if(j-1 >= 0) {
if(board[i][j-1] == 1) count++; //左
if(i-1 >= 0 && board[i-1][j-1] == 1) count++; //左上
if(i+1 <= m-1 && board[i+1][j-1] == 1) count++; //左下
}
if(i-1 >= 0 && board[i-1][j] == 1) count++; //上
if(i+1 <= m-1 && board[i+1][j] == 1) count++;
if(board[i][j] == 1 && (count < 2 || count > 3))
newBoard[i][j] = 0;
if(board[i][j] == 0 && count == 3)
newBoard[i][j] = 1;
if(board[i][j] == 1 && (count == 2 || count == 3))
newBoard[i][j] = 1;
}
}
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
board[i][j] = newBoard[i][j];
}
}
相关文章推荐
- (五)我的JavaScript系列:JavaScript的糟粕
- jquery选择器总结 转自(永远的麦子)
- JavaScript 面向对象详解
- reactor和proactor的区别
- jQuery Mobile 高级设计模板
- 使用jquery获取ul的li的值赋值
- jquery自动创建表格
- Jquery不同版本的兼容性
- Java - Difference between LinkedList and ArrayList
- javascript规范
- Java - Difference between ArrayList and Vector in Java
- Jquery和JS获取ul中li标签
- extjs初学者教程
- Browserify - 像Node.js的require()一样组织浏览器端的js代码
- Java - Difference between Wait and Sleep , Yield in Java
- 在实现文本框只能输入数字和小数点的基础上实现了价格样式(保留两位小数)
- img及父元素(容器)实现类似css3中的background-size:contain / background-size:cover
- angularjs input上传图片前获取图片的Size
- 【笔记】利用CSS3特性实现圆角DIV
- Javascript DOM