LeetCode 1992. Find All Groups of Farmland

news/2024/9/21 0:40:24

原题链接在这里:https://leetcode.com/problems/find-all-groups-of-farmland/description/

题目:

You are given a 0-indexed m x n binary matrix land where a 0 represents a hectare of forested land and a 1 represents a hectare of farmland.

To keep the land organized, there are designated rectangular areas of hectares that consist entirely of farmland. These rectangular areas are called groups. No two groups are adjacent, meaning farmland in one group is not four-directionally adjacent to another farmland in a different group.

land can be represented by a coordinate system where the top left corner of land is (0, 0) and the bottom right corner of land is (m-1, n-1). Find the coordinates of the top left and bottom right corner of each group of farmland. A group of farmland with a top left corner at (r1, c1) and a bottom right corner at (r2, c2) is represented by the 4-length array [r1, c1, r2, c2].

Return a 2D array containing the 4-length arrays described above for each group of farmland in land. If there are no groups of farmland, return an empty array. You may return the answer in any order.

Example 1:

Input: land = [[1,0,0],[0,1,1],[0,1,1]]
Output: [[0,0,0,0],[1,1,2,2]]
Explanation:
The first group has a top left corner at land[0][0] and a bottom right corner at land[0][0].
The second group has a top left corner at land[1][1] and a bottom right corner at land[2][2].

Example 2:

Input: land = [[1,1],[1,1]]
Output: [[0,0,1,1]]
Explanation:
The first group has a top left corner at land[0][0] and a bottom right corner at land[1][1].

Example 3:

Input: land = [[0]]
Output: []
Explanation:
There are no groups of farmland.

Constraints:

  • m == land.length
  • n == land[i].length
  • 1 <= m, n <= 300
  • land consists of only 0's and 1's.
  • Groups of farmland are rectangular in shape.

题解:

When finding a 1, extend to right and bottom and find the boudary. Add the bottom right coordiantes to the result.

Mark this rectangular as 0.

Time Complexity: O(m * n). m = land.length. n = land[0].length. each cell will be visited no more than 3 times.

Space: O(1).

AC Java:

 1 class Solution {
 2     public int[][] findFarmland(int[][] land) {
 3         List<int[]> res = new ArrayList<>();
 4         if(land == null || land.length == 0 || land[0].length == 0){
 5             return land;
 6         }
 7 
 8         int m = land.length;
 9         int n = land[0].length;
10         for(int i = 0; i < m; i++){
11             for(int j = 0; j < n; j++){
12                 if(land[i][j] == 0){
13                     continue;
14                 }
15 
16                 int r = i;
17                 int c = j;
18                 while(r < m && land[r][j] == 1){
19                     r++;
20                 }
21 
22                 while(c < n && land[i][c] == 1){
23                     c++;
24                 }
25 
26                 r = r == 0 ? r : r - 1;
27                 c = c == 0 ? c : c - 1;
28                 res.add(new int[]{i, j, r, c});
29 
30                 for(int p = i; p <= r; p++){
31                     for(int q = j; q <= c; q++){
32                         land[p][q] = 0;
33                     }
34                 }
35             }
36         }
37 
38         int[][] resArr = new int[res.size()][4];
39         for(int i = 0; i < resArr.length; i++){
40             resArr[i] = res.get(i);
41         }
42 
43         return resArr;
44     }
45 }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

鼾声监测神经网络

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 打鼾是一种普遍的症状,严重影响睡眠呼吸障碍患者(单纯打鼾者)、阻塞性睡眠呼吸暂停(OSA)患者及其床伴的生活质量。研究表明,打鼾可用于OSA的筛查和诊断。因此,从夜间睡眠呼吸音频中准确检测打鼾声一直是…

局域网一定要安装SSL证书吗

局域网是一种私有网络,一般在一座建筑物内或建筑物附近,比如家庭、办公室或工厂。局域网络被广泛用来连接个人计算机和消费类电子设备,使它们能够共享资源和交换信息。当局域网被用于公司时,它们就称为企业网络。 局域网将一定区域内的各种计算机、外部设备和数据库连接起来…

倒计时-已阅读N秒后变化为同意

倒计时-已阅读N秒后变化为同意

反编译APK获取代码资源

反编译APK获取代码&资源反编译APK获取代码&资源"反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得…

VMware Workstation 17.5.2 Pro 发布,产品订阅模式首个重大变更

VMware Workstation 17.5.2 Pro 发布,产品订阅模式首个重大变更VMware Workstation 17.5.2 Pro 发布,产品订阅模式首个重大变更 基于 x86 的 Windows、Linux 桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-workstation-17/,查看最新版。原创作品,转载请保…

生成启用开发环境的BAT命令,生成的bat脚本启动失败。

原因: 路径含有中文名称,解析出来时乱码。

图像压缩中DCT变换的优势及原理

目录优势原理 优势 DCT变换可以将高频信号与低频信号分开,从而在压缩时将下三角区域的高频信号进行更充分的压缩(其实就是进行更离散的量化) 原理 首先将RGB格式转化为YCbCr格式(这是为了便于分别对亮度和色度分量进行处理) 因为人的视觉系统对亮度信息更为敏感,左图中看似A比…

比Selenium更优秀的playwright介绍与未来展望

Playwright是新兴的自动化测试工具,拥有丰富的功能和API,隐藏在众多的爬虫和自动化工具背后,而多模LLM的出现让Playwright可以如虎添翼,自动化智能化的RPA工具预计将会井喷般出现。Playwright是微软开发的,专门为满足端到端测试需求而创建的。Playwright支持包括Chromium、…