找出由‘1’组成的孤岛

标签: 算法
4人阅读 评论(0) 收藏 举报
分类:

面试题目,来自leetcode,曾经败在了这个简单的小题。。

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

Example 1:

11110
11010
11000
00000

Answer: 1

Example 2:

11000
11000
00100
00011

Answer: 3

、、、、、、、、、、、、My accepted Answer、、、、、、、、、、、、、、

遍历整个数组,如果发现‘1’就将其及其临接的‘1’修改为0,就是这样。

int numIslands(char** grid, int gridRowSize, int gridColSize) {
    int Islands_Num = 0;
    for(int rowIdx = 0; rowIdx < gridRowSize; rowIdx++)
    {
        for(int columIdx = 0; columIdx < gridColSize; columIdx++)
        {
            if('1' == grid[rowIdx][columIdx])
            {
                ConverToZero(grid,rowIdx, columIdx, gridRowSize, gridColSize);
                Islands_Num++;
            }
        }
    }
    return Islands_Num;
    
}


void ConverToZero(char** grid, int rowIdx, int columIdx, int gridRowSize, int gridColSize)
{
    if( (rowIdx >= gridRowSize)||(columIdx >= gridColSize) ||(rowIdx < 0)||(columIdx < 0) )
        return;
    if('1' == grid[rowIdx][columIdx])
    {
        grid[rowIdx][columIdx] = '0';
    }
    else 
        return;
    ConverToZero(grid,rowIdx+1,columIdx, gridRowSize,gridColSize );
    ConverToZero(grid,rowIdx-1,columIdx, gridRowSize,gridColSize );
    
    ConverToZero(grid,rowIdx,columIdx+1, gridRowSize,gridColSize );
    ConverToZero(grid,rowIdx,columIdx-1, gridRowSize,gridColSize );
    
}
一直感觉面试考算法题,没有毛意义!
查看评论

找出由n个数组成的序列内最长的递增子序列

取一个b[]数组,将原数组的任意一个数之前为递减序列的数的个数储存在里面(如下): a[7]: 1 2 1 2 3 4 5 b[7]: 0 1 0 1 2  3 4 最后求出b数组内最大值以及其...
  • qq_30035873
  • qq_30035873
  • 2016-04-23 21:59:06
  • 293

《剑指Offer》面试题:找到第一个只出现一次的字符

题目描述如下: 题目描述: 在一个字符串(1
  • u010412719
  • u010412719
  • 2015-08-29 10:42:16
  • 1274

找出n个数组成的最长单调递增子序列( 动态规划O(nlogn) )

题目:       给出一个由n个数组成的序列x[1..n],找出它的最长单调上升子序列。即求最大的m和a1,a2……,am,使得a1   分析:       这也是一道动态规划...
  • morninghapppy
  • morninghapppy
  • 2012-06-07 20:24:36
  • 4107

1157: 连续的n个1

Description 计算机数据都是由0和1组成的,看着长长的0101001110101111011,要找出连续n个1的子串有多少个,确实麻烦,请你编程实现吧。 Input 输入第一行...
  • lvhaoye
  • lvhaoye
  • 2017-07-29 18:40:05
  • 414

每天一道LeetCode-----给定二维数组代表海域和岛屿,计算有多少个孤岛

Number of Islands 原题链接Number of Islands 给定一个二位数组,其中’0’代表水,’1’代表土地,判断有多少个孤岛被水隔开。假定二位数组四周都是’0’ 思路...
  • sinat_35261315
  • sinat_35261315
  • 2018-03-02 16:06:20
  • 43

算法导论 习题15.4-5 15.4-6 找出一个n个数的序列中最长的单调递增子序列

算法导论15.4-5 请给出一个O(n^2)时间的算法,使之能找出一个n个数的序列中最长的单调递增子序列。 这个题目是在动态规划部分,此处显然是要用到动态规划。 我们知道可以使用动态规划思想的问题的...
  • LucienDuan
  • LucienDuan
  • 2014-04-24 12:48:54
  • 6734

YTU-OJ-Problem A: 最小节点(线性表)

Problem A: 最小节点(线性表) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 220  Solved: 185 [Submit][...
  • MIKASA3
  • MIKASA3
  • 2015-07-21 09:03:43
  • 469

设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。

题目如下: 设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。 解题思路: 思路一:简单dp,求最长递增子序列,即为求其与已经排好序的序列的公共子序列 /*...
  • Emanueling
  • Emanueling
  • 2012-04-01 20:51:43
  • 4657

找出总分最高的学生

 找出总分最高的学生(15 分) 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内...
  • Yuoliku
  • Yuoliku
  • 2017-12-19 08:31:18
  • 1518

最强神作!Crysis深度剖析与优化指南

题目:最强神作!Crysis深度剖析与优化指南 作者:小熊在线——WolStame 介绍:最强游戏Crysis全方位剖析与深度优化指南 关键:CRYSIS/DX10游戏/技术剖析/优...
  • pizi0475
  • pizi0475
  • 2012-08-07 06:54:38
  • 7391
    个人资料
    持之以恒
    等级:
    访问量: 1369
    积分: 380
    排名: 21万+
    文章存档
    最新评论