|

楼主 |
发表于 2020-3-30 21:48:34
|
显示全部楼层
本帖最后由 yzhms 于 2020-3-30 21:52 编辑
- void step(int row, int col, char **grid2, int gridSize, int *gridColSize) {
- if ((row < 0) || (row >= gridSize) || (col < 0) || col >= (*gridColSize)) {
- return;
- }
- if (grid2[row][col] == '0') {
- return;
- }
- //printf("step[%d][%d]='%c'\n", row, col, grid2[row][col]);
- grid2[row][col] = '0';
- //up
- step(row - 1, col, grid2, gridSize, gridColSize);
- //down
- step(row + 1, col, grid2, gridSize, gridColSize);
- //left
- step(row, col - 1, grid2, gridSize, gridColSize);
- //right
- step(row, col + 1, grid2, gridSize, gridColSize);
- }
- int numIslands(char** grid, int gridSize, int* gridColSize){
- char **grid2;
- int i, j;
- int sum = 0;
- if (!grid || !gridSize || !gridColSize || !grid[0] || !gridColSize[0]) {
- return 0;
- }
-
- i=grid[0][0];
- grid2 = (char**)malloc(sizeof(char*) * gridSize);
- for (i = 0; i < gridSize; i++) {
- grid2[i] = (char*)malloc(*gridColSize);
- memcpy(grid2[i], grid[i], *gridColSize);
- }
- for (i = 0; i < gridSize; i++) {
- for (j = 0; j < *gridColSize; j++) {
- //printf("grid[%d][%d]='%c'\n", i, j, grid2[i][j]);
- if (grid2[i][j] != '0') {
- step(i, j, grid2, gridSize, gridColSize);
- sum++;
- }
- }
- }
- for (i = 0; i < gridSize; i++) {
- free(grid2[i]);
- }
- free(grid2);
- return sum;
- }
复制代码
执行结果:通过
显示详情
执行用时 :8 ms, 在所有 C 提交中击败了99.97%的用户
内存消耗 :7.4 MB, 在所有 C 提交中击败了100.00%的用户
|
|