当前位置: 首页 > article >正文

Java LeetCode 练习

       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;
    }
}


http://www.kler.cn/a/282823.html

相关文章:

  • vue3: ref, reactive, readonly, shallowReactive
  • 试编写算法将单链表就地逆置(默认是带头节 点,如果是不带头节点地逆置呢?)
  • 深入解析贪心算法及其应用实例
  • 设计模式之工厂模式,但是宝可梦
  • Docker compose部署portainer
  • C++ 编程基础(6)作用域 | 6.3、类作用域
  • pmp证书为何会被骂?他真的就是个垃圾证书?
  • 鸿蒙HarmonyOS开发实战: 页面传值跳转
  • Linux CMake根据环境变量和编译选项,编译多模块
  • k8s集群搭建
  • 四个版本的双向链表(C++,C++ CLI, C#, Java)
  • 奇安信渗透测试岗位三面经验分享
  • SpringBoot集成EasyExcel实现Excel文件导入/出
  • 计算机基础复习8.29
  • 力扣top300:3. 无重复字符的最长子串
  • Prompt-Tuning 和 LoRA大模型微调方法区别
  • 第二证券:三折折叠屏手机呼之欲出,14股业绩暴涨超200%
  • 大模型RAG(四)RAG工具
  • C++_CH16_Local static
  • Python知识点:如何使用PostgreSQL与Psycopg2进行数据库操作
  • 查找3(红黑树、B树)
  • VC++内存泄漏检测方法(6):介绍deleaker和heob两款软件
  • OpenCV杂项图像变换(2)线性混合函数blendLinear()的使用
  • 触想强固型工业显示器加速海上油气勘探开发
  • GIT版本控制与协同开发
  • pnpm快速入门