返回顶部
首页 > 资讯 > 精选 >Android岛屿数量算法怎么使用
  • 408
分享到

Android岛屿数量算法怎么使用

2023-07-05 07:07:01 408人浏览 独家记忆
摘要

这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android岛屿数量算法怎么使用”文章能帮助大家解决问题。岛屿数量之前接触过一个算法,比较有意思,

这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android岛屿数量算法怎么使用”文章能帮助大家解决问题。

岛屿数量

之前接触过一个算法,比较有意思,可以拿出来说说,这个算法是这样的。

给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。(岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。)

比如

输入

[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]

输出3。因为1相连的就3块

那这道题要如何做呢,其实有个思路,我去遍历二维数组,判断到如果为1,我就把与1相连的上下左右都置0,这样在接下来的遍历中就不会受到已统计数量的影响。

如果只听这样的描述还是没理解也没关系,可以看看代码,我这是用java写的,挺简单的,应该能很容易看懂。

public class Solution {        public int solve (char[][] grid) {        int total = 0;        if(grid.length == 0 || grid[0].length == 0){            return total;        }        int wl = grid[0].length;        for(int i=0; i < grid.length; i++){            for(int j =0; j < wl; j++){                if(grid[i][j] == '1'){                    total++;                    cancel(grid, i, j);                }            }        }        return total;    }    private void cancel(char[][] grid, int i, int j){        if(grid[i][j] == '1'){            grid[i][j] = '0';            if(i > 0){                cancel(grid, i-1, j);            }            if(j > 0){                cancel(grid, i, j-1);            }            if(j < grid[0].length -1){                cancel(grid, i, j+1);            }            if(i < grid.length - 1){                cancel(grid, i+1, j);            }        }    }}

那能从这个算法中学会什么呢?学会了这道算法,被问到就有题库了【狗头】,那也太血亏了,还是要扩展一下思路。

我觉得有意思的地方在于,它是通过一个反向的思路,去设置状态,以此来把这个问题变得更简单。

有个比较基础的坑,在循环中删除元素,这是会出问题的。假设我有一堆学生,我生日了要发出邀请,我想把所有的男生都给排除掉。

public class Student {    public int sex; // 男是1}
List<Student> students = new getAllStudents();for (int i = 0; i < students.size(); i++) {    if (students.get(i).sex == 1){        students.remove(students.get(i));    }}

这样写肯定会出问题,这是一个也算是经典的BUG场景了,相信所有人都碰到过。因为我们的思路是“排除所有男生”,但是如果反着去想,这个问题也就很好解决,反着就是“保留所有女生”

List<Student> students = new getAllStudents();List<Student> girls = new ArrayList<>();for (int i = 0; i < students.size(); i++) {    if (students.get(i).sex == 0){        girls.add(students.get(i));    }}students = girls;

应该没什么问题吧,我直接就在这写了,类似伪代码那种,大概懂什么意思就行,这个其实就是copy and write

虽然这个场景可能不能很好的表现出这个思路,但是意思就是如果我们开发中碰到一些问题或者复杂的逻辑流程,我们可以试着反着思考,说不定会有更好的出路。

关于“Android岛屿数量算法怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Android岛屿数量算法怎么使用

本文链接: https://lsjlt.com/news/350402.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android岛屿数量算法怎么使用
    这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android岛屿数量算法怎么使用”文章能帮助大家解决问题。岛屿数量之前接触过一个算法,比较有意思,...
    99+
    2023-07-05
  • Android开发岛屿数量算法示例解析
    目录前言岛屿数量前言 最近没有什么比较好的思路,之前有写过关于数据结构相关的内容。所以想往算法这方面看不看能不能捣鼓点出一些开发思路。 岛屿数量 之前接触过一个算法,比较有意思,可...
    99+
    2023-03-01
    Android开发岛屿数量算法 Android 算法
  • java回文数算法怎么使用
    要判断一个数字是否为回文数,可以使用以下算法: 将数字转换为字符串。 使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。 ...
    99+
    2023-10-23
    java
  • 怎么使用Tarjan算法求解强连通分量
    本篇内容介绍了“怎么使用Tarjan算法求解强连通分量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!算法框...
    99+
    2024-04-02
  • 怎么使用Dijkstra算法
    怎么使用Dijkstra算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最短路问题最短路问题(Shortest Path &...
    99+
    2024-04-02
  • Apriori算法怎么使用
    Apriori算法是一种用于挖掘频繁项集和关联规则的算法。其主要思想是通过迭代的方式,从候选项集中找出频繁项集,并使用频繁项集来生成...
    99+
    2023-10-26
    Apriori
  • 大量数据加密用什么算法
    常用于加密大量数据的加密算法有以下几种MD5算法MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,MD5是以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个3...
    99+
    2024-04-02
  • Android二分查找算法怎么用
    本篇内容主要讲解“Android二分查找算法怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android二分查找算法怎么用”吧!旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组...
    99+
    2023-06-04
  • Java对数器验证算法怎么使用
    本文小编为大家详细介绍“Java对数器验证算法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java对数器验证算法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对数器验证算法的正确性对数器介绍有...
    99+
    2023-07-06
  • python变量数据类型和运算符怎么使用
    1 数据类型不同类型的变量可以进行的运算是不同的,所以必须理解变量的类型,python中数据类型可以分为:内置类型:数值类型:整型int,浮点型float,复数(complex) 3+5jstr:字符串bool:布尔值【True,False...
    99+
    2023-05-14
    Python
  • android使用intent传递参数实现乘法计算
    本文实例为大家分享了android使用intent传递参数实现乘法计算的具体代码,供大家参考,具体内容如下 主界面上是两个EditText和一个按钮。用于输入两个数字参数。 calc...
    99+
    2024-04-02
  • Python dHash算法怎么使用
    这篇文章主要介绍“Python dHash算法怎么使用”,在日常操作中,相信很多人在Python dHash算法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python dHash算法怎么使用”的疑...
    99+
    2023-06-30
  • Python怎么使用变量_Python使用变量方法
    1、首先学过c语言的朋友都知道,c语言如果要使用变量,需要先定义一个类型的变量,然后才可以使用。 2、然后在Python语言中,不需要预先定义,可以直接在用到的地方赋值即可。 3、P...
    99+
    2024-04-02
  • Android onFinishInflate方法怎么使用
    在Android中,onFinishInflate方法是View类中的一个方法,用于在View被inflate(填充)后调用。具体使...
    99+
    2023-10-12
    Android
  • android inflate方法怎么使用
    在Android中,`inflate()`方法主要是用来将一个布局文件转换为对应的View对象,即将XML布局文件转换为Java对象...
    99+
    2023-08-24
    android inflate
  • 怎么使用Java贪心算法
    这篇文章主要介绍“怎么使用Java贪心算法”,在日常操作中,相信很多人在怎么使用Java贪心算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Java贪心算法”的疑惑...
    99+
    2024-04-02
  • vb递归算法怎么使用
    VB递归算法使用步骤如下:1. 定义一个递归函数,函数中包含递归调用。2. 判断递归终止条件,即递归函数不再调用自身的条件。3. 在...
    99+
    2023-06-10
    vb递归算法
  • 怎么使用Python贪心算法
    这篇文章主要介绍“怎么使用Python贪心算法”,在日常操作中,相信很多人在怎么使用Python贪心算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Python贪心算法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • 怎么使用Python退火算法
    本篇内容介绍了“怎么使用Python退火算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  一、简介  退火算法不言而喻,就是钢铁在淬炼过...
    99+
    2023-06-01
  • vue2的diff算法怎么使用
    这篇文章主要介绍“vue2的diff算法怎么使用”,在日常操作中,相信很多人在vue2的diff算法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue2的diff算法怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作