ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试题:LC695 最大岛屿面积的改编题

2022-07-05 13:04:28  阅读:141  来源: 互联网

标签:LC695 面试题 代表 岛屿 平地 矩阵 数值 改编


改编题

给定一个二维矩阵,上面有0到9的数值。0代表海洋,非0代表岛屿,
非0值且数值相同相连代表平地。
求面积最大的一块平地的位置数。

如以下矩阵:
[
[3, 0, 3, 0, 5],
[4, 3, 0, 4, 5],
[3, 3, 4, 0, 3],
[3, 0, 0, 4, 4]
],
占地最大的一块平地为数字3所占据的4个位置,结果为4。

输入:二维数组
返回:int

Python解答

class S:
    def dfs(self, i, j, target=1):
        if not 0 <= i < len(self.nums) or not 0 <= j < len(self.nums[0]):
            return 0
        
        if self.nums[i][j] == 0:
            return 0
        
        if self.nums[i][j] != target:   # 不是target直接返回0
            return 0
        
        self.nums[i][j] = 0 # 置为0没问题,因为上面的判断,不同的target是不相干扰的
        return 1 + self.dfs(i-1, j, target) + self.dfs(i+1, j, target) \
        + self.dfs(i, j-1, target) + self.dfs(i, j+1, target)
        

    def solution(self, nums):
        self.nums = nums
        self.maxarea = 0
        for i in range(0, len(self.nums)):
            for j in range(0, len(self.nums[0])):
                if self.nums[i][j] != 0:
                    area = self.dfs(i, j, target=self.nums[i][j])
                    self.maxarea  = max(area, self.maxarea)
        return self.maxarea


nums = [[3, 0, 3, 0, 5],[4, 3, 0, 4, 5],[3, 3, 4, 0, 3],[3, 0, 0, 4, 4]]#,    
# nums外面后面不能有逗号
s = S()
print(s.solution(nums))

标签:LC695,面试题,代表,岛屿,平地,矩阵,数值,改编
来源: https://www.cnblogs.com/hsiangyu-meng/p/16445975.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有