LeetCode 289. 生命游戏(位运算)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 289. 生命游戏(位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
- 2.1 復制數組解法
- 2.2 原地解法
- 2.3 位運算
1. 題目
鏈接:289. 生命游戲
2. 解題
2.1 復制數組解法
很簡單,按照題意模擬即可
class Solution { public:void gameOfLife(vector<vector<int>>& board) {if(board.empty())return;vector<vector<int>> cp(board);//復制數組法int nearby[8][2] = {{-1, 0}, {-1, -1}, {0, -1}, {1, -1},{1, 0}, {1, 1}, {0, 1}, {-1, 1}};int m = board.size(), n = board[0].size(), i, j, k, x, y, live;for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){live = 0;for(k = 0; k < 8; ++k){x = i+nearby[k][0];y = j+nearby[k][1];if(x>=0 && x<m && y>=0 && y<n && cp[x][y])live++;}if(cp[i][j]){if(live < 2 || live > 3)board[i][j] = 0;}else{if(live == 3)board[i][j] = 1;}}}} };2.2 原地解法
- 原來是1,標記成0,用2表示(等于1或者2,原狀態都是1)
- 原來是0,標記成1,用3表示(等于0或者3,原狀態都是0)
- 處理完后,改寫數組
- 等于2的,賦值為0
- 等于3的,賦值為1
2.3 位運算
- 利用數值的低位作為原數據
- 高位保存周圍存活的數量
總結
以上是生活随笔為你收集整理的LeetCode 289. 生命游戏(位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode 1353. 根节点到叶
- 下一篇: LintCode 1859. 最小振幅(