首页 > 编程语言 >Java LeetCode 练习

Java LeetCode 练习

时间:2024-08-29 22:54:10浏览次数:8  
标签:Java 格子 int 练习 System ++ grid LeetCode out

       3142. 判断矩阵是否满足条件

需求:

        给你一个大小为 m x n 的二维矩阵 grid 。你需要判断每一个格子 grid[i][j] 是否满足:
        如果它下面的格子存在,那么它需要等于它下面的格子,也就是 grid[i][j] == grid[i + 1][j] 。
        如果它右边的格子存在,那么它需要不等于它右边的格子,也就是 grid[i][j] != grid[i][j + 1] 。
        如果 所有 格子都满足以上条件,那么返回 true ,否则返回 false 。

       

题解:

        根据题意直接模拟即可。(暴力)
        设矩阵 grid 的行数与列数分别为 m,n。我们遍历阵 grid,对于任意的位置判断 grid[i][j] 是否满足条件即可:
        如果满足 i+1<m,此时需要满足 grid[i][j]=grid[i+1][j],如果不满足则返回 false;
        如果满足 j+1<n,此时需要满足 grid[i][j] =grid[i][j+1],如果不满足则返回 false;
        遍历结束之后,如果没有遇到不满足条件的情况,则返回 true。

代码:

package JavaExercise20240829;


import java.util.Scanner;

public class LeetCodeExercise {
    public static void main(String[] args) {
        // 需求
        // 给你一个大小为m * n的二维矩阵grid 。你需要判断每一个格子grid[i][j]是否满足:
        //如果它下面的格子存在,那么它需要等于它下面的格子,也就是grid[i][j] == grid[i + 1][j]。
        //如果它右边的格子存在,那么它需要不等于它右边的格子,也就是grid[i][j] != grid[i][j + 1]。
        //如果所有格子都满足以上条件,那么返回true ,否则返回false。

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入二维数组的行数:");
        int m = sc.nextInt();
        System.out.println("请输入二维数组的列数:");
        int n =sc.nextInt();
        int[][] array = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.printf("请输入第%d行,第%d列个数字", i + 1, j + 1);
                array[i][j] = sc.nextInt();
            }
        }
        Solution solution = new Solution();
        System.out.println(solution.satisfiesConditions(array));
    }
}

class Solution {
    public boolean satisfiesConditions(int[][] grid) {
        int outLength = grid.length;
        int inLength = grid[0].length;
        for (int i = 0; i < outLength; i++){
            for (int j = 0; j < inLength; j++) {
                if (i != outLength - 1  && grid[i][j] != grid[i + 1][j]) {
                    return false;
                }
                if (j != inLength - 1 && grid[i][j] == grid[i][j + 1]) {
                    return false;
                }
            }
        }
        return true;
    }
}

标签:Java,格子,int,练习,System,++,grid,LeetCode,out
From: https://blog.csdn.net/Aishangyuwen/article/details/141690104

相关文章

  • 从匿名内部类到Lambda表达式:Java编程的优雅进化
    匿名内部类首先我们先来介绍一下什么是匿名内部类匿名内部类:java中一种特殊的类定义方式,它允许你在需要实现一个接口或继承一个类的地方直接定义一个该接口或类的匿名子类。若想创建一个派生类的对象,并且对象只创建一次,可以设计为匿名内部类,可以大大简化代码注意:匿名内部类......
  • Java核心API——io类缓冲流
    在前面的学习中我们学习了如何向文件中简单的传输写入数据java将流分为两类节点流与处理流节点流:又称为低级流,特点:实际连接程序与另一端的"管道",负责实际读写数据的流.IO一定是建立在某个低级流的基础上进行的.文件流就是低级流,它们是实际连接程序与文件的管道,负责......
  • Java中的String、StringBuilder、StringBuffer
            在Java中,String、StringBuilder 和 StringBuffer 是处理字符串的三个常用类,它们各有特点和适用场景。以下是对这三个类的详细解释、常用方法的代码示例以及它们之间的区别和适用场景。StringString 类表示不可变的字符序列。一旦创建,String 对象的内容......
  • Java Script网页设计案例
    1.JavaScript网页设计案例下面我将提供一个简单的JavaScript网页设计案例,该案例将实现一个动态的待办事项列表(TodoList)。用户可以在页面上添加新的待办事项,标记它们为已完成,以及删除它们。这个案例将使用HTML来构建页面结构,CSS来美化页面,以及JavaScript来添加动态功能。1.1HT......
  • 一篇文章讲清楚Java中的反射
    介绍每个类都有一个Class对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的.class文件,该文件内容保存着Class对象。类加载相当于Class对象的加载。类在第一次使用时才动态加载到JVM中,可以使用Class.forName("com.mysql.jdbc.Driver")这种方式来控制类的加......
  • JavaScript开发学习札记:一位Java后端程序员的成长之路
    前言:        这是一篇关于JavaScript的学习笔记,目的是针对java后端开发人员,快速入门并掌握JavaScript这门语言的基本使用,并且能够进入下一阶段框架的学习。引言:为什么学习JavaScript?JavaScript是web开发人员必须学习的3门语言中的一门:HTML定义了网页的内......
  • java.time包时间类浅谈
    Java早期日期时间API:java.util.Date与java.util.Calendar一、背景在Java的早期版本中,处理日期和时间的需求主要由java.util.Date类和随后加入的java.util.Calendar类来满足。这两个类在Java1.0和Java1.1中分别被引入,为Java程序提供了基本的日期和时间操作能力。然而,随着......
  • 一篇文章讲清楚Java中的反射
    介绍每个类都有一个Class对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的.class文件,该文件内容保存着Class对象。类加载相当于Class对象的加载。类在第一次使用时才动态加载到JVM中,可以使用Class.forName("com.mysql.jdbc.Driver")这种方式来控制类的......
  • 2024年高频Java面试题
    1、java反射的作用与原理1、定义:反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Ja......
  • 第四章 Java核心类库 第二节 常用Java类库
    1.Math类与常用数学方法首先,我们来看一下Math类。Math类简介:Math类提供了一组用于数学运算的静态方法,包括求绝对值、取整、平方根、幂运算等常见操作。这些方法都是静态的,意味着我们可以直接通过类名调用它们。常用方法:abs():返回绝对值。ceil()和floor():分别返回向......