0
点赞
收藏
分享

微信扫一扫

C语言岛屿数量

程序员知识圈 2022-01-14 阅读 45

leetcode 题目200 numIslands

按照leetcode里一个精选题解的思路写了C语言的版本,感觉算是很简洁的一个版本了。

void area (char** grid, int gridSize, int* gridColSize, int i, int j){
    int Colsize = *gridColSize;
    if (i<0 || i >= gridSize || j>=Colsize || j<0 || grid[i][j] != '1'){
        return;
    }
    grid[i][j] = 2;
    area (grid, gridSize,gridColSize, i+1, j);
    area (grid, gridSize,gridColSize, i-1, j);
    area (grid, gridSize,gridColSize, i, j+1);
    area (grid, gridSize,gridColSize, i, j-1);
    return 0;
}
int numIslands(char** grid, int gridSize, int* gridColSize){
    int Colsize = *gridColSize;
    int num = 0;
    for (int i = 0; i<gridSize; i++){
        for (int j=0; j< Colsize; j++){
            if (grid[i][j]=='1') {
                num ++;
                area(grid, gridSize, gridColSize, i,j);
            }
        }
    }
    return num;
}

执行结果:

 

没想到内存消耗更小的方法,大家有什么建议还请不吝赐教。

懒得打字,就先把手写笔记放上来了。 

 

举报

相关推荐

0 条评论