当前位置: 面试刷题>> 黑白屏 (经典算法题500道)


### 题目描述补充 **题目:黑白屏问题** 在一个二维网格中,每个格子可以是黑色或白色。你需要编写一个算法,以特定的方式翻转网格中的颜色(黑色变白色,白色变黑色),并输出翻转后的网格。翻转的方式有两种: 1. **水平翻转**:将整个网格沿着水平方向翻转。 2. **垂直翻转**:将整个网格沿着垂直方向翻转。 **输入**: - 一个二维数组,表示初始的网格状态,其中0代表黑色,1代表白色。 - 一个字符串,表示要进行的翻转操作('H' 表示水平翻转,'V' 表示垂直翻转)。 **输出**: - 翻转后的二维网格。 ### 示例 **输入**: ``` 网格: [ [0, 1, 0], [1, 0, 1], [0, 1, 0] ] 操作: "H" ``` **输出**: ``` [ [0, 0, 1], [1, 1, 0], [0, 0, 1] ] ``` ### PHP 示例代码 ```php function flipGrid($grid, $operation) { $rows = count($grid); $cols = count($grid[0]); if ($operation == 'H') { // 水平翻转 for ($i = 0; $i < $rows; $i++) { for ($j = 0; $j < $cols / 2; $j++) { $temp = $grid[$i][$j]; $grid[$i][$j] = $grid[$i][$cols - $j - 1]; $grid[$i][$cols - $j - 1] = $temp; } } } elseif ($operation == 'V') { // 垂直翻转 for ($j = 0; $j < $cols; $j++) { for ($i = 0; $i < $rows / 2; $i++) { $temp = $grid[$i][$j]; $grid[$i][$j] = $grid[$rows - $i - 1][$j]; $grid[$rows - $i - 1][$j] = $temp; } } } return $grid; } // 示例 $grid = [ [0, 1, 0], [1, 0, 1], [0, 1, 0] ]; $operation = "H"; $result = flipGrid($grid, $operation); print_r($result); ``` ### Python 示例代码 ```python def flip_grid(grid, operation): if operation == 'H': # 水平翻转 return [row[::-1] for row in grid] elif operation == 'V': # 垂直翻转 return [list(col) for col in zip(*grid[::-1])] # 示例 grid = [ [0, 1, 0], [1, 0, 1], [0, 1, 0] ] operation = "H" result = flip_grid(grid, operation) print(result) ``` ### JavaScript 示例代码 ```javascript function flipGrid(grid, operation) { const rows = grid.length; const cols = grid[0].length; if (operation === 'H') { // 水平翻转 for (let i = 0; i < rows; i++) { let left = 0, right = cols - 1; while (left < right) { [grid[i][left], grid[i][right]] = [grid[i][right], grid[i][left]]; left++; right--; } } } else if (operation === 'V') { // 垂直翻转 const flipped = []; for (let j = 0; j < cols; j++) { const col = []; for (let i = rows - 1; i >= 0; i--) { col.push(grid[i][j]); } flipped.push(col); } return flipped; } return grid; } // 示例 const grid = [ [0, 1, 0], [1, 0, 1], [0, 1, 0] ]; const operation = "H"; const result = flipGrid(grid, operation); console.log(result); ``` 以上示例展示了如何在PHP、Python和JavaScript中实现黑白屏问题的水平翻转和垂直翻转功能。注意,每种语言的代码都经过了适当的注释和说明,以便理解和使用。
推荐面试题