Java Program to Find the Number of 'X' Total Shapes2025年3月29日 | 阅读 5 分钟 在本节中,我们将 目标是计算独立连接的“X”形状的数量——一个形状定义为一组相邻的“X”——存在的数量。相邻的邻居是垂直和水平的,而不是对角的。 问题陈述给定一个二维矩阵,其中每个单元格是“X”或“O”,目标是确定有多少个独立的连接的“X”组(形状)。 例如,在矩阵中 有三个独立的“X”形状。
方法为了解决这个问题,可以应用深度优先搜索 (DFS) 或广度优先搜索 (BFS) 方法遍历矩阵并计算连接的“X”的数量。任何未访问过的“X”都将被视为新形状的起点;“X”将在 DFS 或 BFS 中进行遍历;形状计数器将递增。
DFS 算法
文件名:XShapeCounter.java 输出 Number of 'X' shapes: 3 解释XShapeCounter 类在二维字符网格中,用“X”单元格表示形状的一部分,用“O”单元格表示空格,来计算不同的“X”形状。countXShapes() 方法遍历网格,使用已访问矩阵跟踪已处理的单元格。 dfs() 方法启动深度优先搜索 (DFS),用于搜索四个方向(上、下、左、右)的所有相关“X”单元格,并在找到未访问的“X”时将其标记为已访问。形状的数量会随着 DFS 调用次数的增加而增加,每次调用代表一个形状。 isValid() 辅助函数仅检查合法的、未被探索的“X”单元格,并验证边界条件。主方法输出不同“X”形状的总数,并在示例网格上测试程序。 结论总之,XShapeCounter 应用程序使用的深度优先搜索 (DFS) 方法有效地计算了二维网格中独立“X”形状的数量。该程序在四个方向(上、下、左、右)上探索所有连接的“X”,遍历网格并标记已访问的“X”单元格,从而确保每个形状只被计算一次。 使用此方法可以以可理解且高效的方式解决矩阵中连接组件的计数问题。已访问矩阵确保每个单元格只被处理一次,从而提高了效率,并且该算法设计用于处理空网格等常见边缘情况。 此方法可以扩展以解决矩阵或网格中相关元素的相关问题。 下一主题Java DES 代码 |
数组和向量是在处理数据集时两种常用的编程结构。尽管它们都用于存储多个相同类型的元素,但它们的特性、性能、灵活性和内存管理却大相径庭。什么是数组?一组元素可以...
阅读 6 分钟
在本节中,我们将学习如何在 Java 中找到从左上角到右下角的可能路径。这是面试中一个突出的问题。从左上角到右下角的约束是:从……
5 分钟阅读
在 Java 中,CloneNotSupportedException 是一个异常,表示尝试克隆对象失败,因为该对象没有实现 Cloneable 接口。Cloneable 接口是一个标记接口,表示对象可以被克隆。当一个对象不...
阅读 2 分钟
在面向对象编程中,抽象被定义为隐藏用户不需要的细节(实现),而专注于基本信息(功能)。它提高了效率并降低了复杂性。在 Java 中,可以通过抽象类和抽象方法来实现抽象。抽象方法 在 Java 中,抽象方法是...
5 分钟阅读
给定一个字符串 S,判断它是否是 K-回文。当从 K-回文字符串中删除最多 K 个字符时,字符串变为回文。在这里,任务是从给定字符串中删除最多 K 个字符,以将其转换为其...
阅读 6 分钟
在 Java 中,wait() 和 notify() 是 Object 类提供的这两个方法,它们用于线程间通信和同步。wait() 方法 Java 编程语言中的 wait() 方法是一个同步方法,它会导致当前线程放弃对象的锁...
阅读9分钟
? Java 是一种用途广泛且功能强大的编程语言,由于其“一次编写,到处运行”的理念而广受欢迎。实现这一点的关键组件之一是 Java 运行时环境 (JRE)。在本节中,我们将深入探讨 JRE 的作用...
阅读 3 分钟
在 Java 8 中,anyMatch() 是在 Stream 接口中定义的一个方法。它执行一个短路终端操作。在本节中,我们将通过一个示例讨论 Java 8 Stream 中的 anyMatch() 方法。在进入正题之前,我们将首先理解中间和...
5 分钟阅读
?在本节中,我们将创建一个 Java 程序,以根据日期获取星期几的名称。在处理 Java 中的日期和时间时,会用到以下类。Calendar 类:该类属于 java.util 包。它继承了 Object 类,并且...
阅读 4 分钟
在本节中,我们将创建 Java 程序,将一个数字的各位相加,直到该数字变为个位数。该问题也称为数字根问题。示例假设 76345 是一个数字,我们需要找到它的各位数字之和,直到它变成...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India