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

2024年4月13日美团春招实习试题【第一题:好子矩阵】-题目+题解+在线评测【模拟】

2024年4月13日美团春招实习试题【第一题:好子矩阵】-题目+题解+在线评测【模拟】

  • 题目描述:
    • 输入描述
    • 输出描述
    • 样例
  • 解题思路一:模拟
  • 解题思路二:思路二
  • 解题思路三:直接判断

题目描述:

塔子哥定义一个矩阵是”好矩阵”,当且仅当该矩阵所有元素都相同。 现在塔子哥拿到了一个矩阵,她想知道该矩阵有多少2*2的子知阵是好矩阵?

输入描述

第一行输入两个正整数m和n,代表输入矩阵的行数和列数。

接下来的n行,每行输入m个正整数a(i,j),代表塔子哥拿到的矩阵。

1<=n,m<=100

1 < = a ( i , j ) < = 1 0 9 1<=a_{(i,j)}<=10^9 1<=a(i,j)<=109

输出描述

2*2好子矩阵的数量

样例

输入

3 3
1 2 1
1 1 1
1 1 3

输出

1

说明

只有左下角一个好子矩阵。

OJ链接:
https://codefun2000.com/p/P1819

解题思路一:模拟

m, n = map(int, input().split())
matrix = [[0] * n for _ in range(m)]
for i in range(m):row = list(map(int, input().split()))matrix[i] = row
def goodMatrix(matrix, x, y):t = matrix[x][y]if t == matrix[x+1][y] and t == matrix[x+1][y+1] and t == matrix[x][y+1]:return Truereturn Falsecnt = 0
for i in range(m-1):for j in range(n-1):if goodMatrix(matrix, i, j):cnt += 1
print(cnt)

时间复杂度:O(nm)
空间复杂度:O(1)

解题思路二:思路二

import collectionsn, m = map(int, input().split())
mat = list()
for _ in range(n):mat.append(list(map(int, input().split())))bad_start = collections.defaultdict(list)
ret = 0for i in range(n-1):for j in range(m-1):if j not in bad_start[i] and mat[i][j+1] == mat[i][j]:if mat[i+1][j+1] != mat[i][j+1]:bad_start[i].append(j+1)else:if mat[i+1][j] != mat[i+1][j+1]:bad_start[i+1].append(j)else:ret += 1print(ret)

时间复杂度:O(nm)
空间复杂度:O(1)

解题思路三:直接判断

n, m = map(int, input().split())
g = [list(map(int, input().split())) for _ in range(n)]
ans = 0
for i in range(n - 1):for j in range(m - 1):if g[i][j] == g[i + 1][j] and g[i + 1][j] == g[i][j + 1] and g[i][j + 1] == g[i + 1][j + 1]:ans += 1
print(ans)# python
n,m = map(int,input().split())
matrix=[]
for _ in range(n):row=list(map(int, input().split()))matrix.append(row)
count=0
for i in range(n-1):for j in range(m-1):if matrix[i][j] == matrix[i+1][j]==matrix[i][j+1]==matrix[i+1][j+1]:count+=1
print(count)# java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[][] g = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {g[i][j] = scanner.nextInt();}}int ans = 0;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < m - 1; j++) {if (g[i][j] == g[i + 1][j] && g[i + 1][j] == g[i][j + 1] && g[i][j + 1] == g[i + 1][j + 1]) {ans++;}}}System.out.println(ans);scanner.close();}
}# c++
#include <iostream>
#include <vector>using namespace std;int main() {int n, m;cin >> n >> m;vector<vector<int>> g(n, vector<int>(m));for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> g[i][j];}}int ans = 0;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < m - 1; j++) {if (g[i][j] == g[i + 1][j] && g[i + 1][j] == g[i][j + 1] && g[i][j + 1] == g[i + 1][j + 1]) {ans++;}}}cout << ans << endl;return 0;
}

时间复杂度:O(nm)
空间复杂度:O(1)

http://www.lryc.cn/news/341072.html

相关文章:

  • ssm057学生公寓管理中心系统的设计与实现+jsp
  • 循环神经网络(RNN):概念、挑战与应用
  • UML 介绍
  • Pytorch——训练时,冻结网络部分参数的方法
  • 制冷铜管焊接介绍
  • spring06:mybatis-spring(Spring整合MyBatis)
  • 如何使用自定义Promptbooks优化您的安全工作流程
  • Text2sql的一些技巧
  • aws云靶场和一些杂记
  • 《AI编程类工具之四——GitHub copiot》
  • Unity类银河恶魔城学习记录13-1 p142 Save system源代码
  • 【C++杂货铺】继承
  • 快速上手Linux核心命令
  • 背 单 词 (考研词汇闪过)
  • 数据库工具解析之 OceanBase 数据库导出工具
  • [Algorithm][滑动窗口][长度最小的子数组] + 滑动窗口原理
  • .NET 发布,部署和运行应用程序
  • B树(B-tree)
  • EelasticSearch是什么?及EelasticSearch的安装
  • Python机器学习项目开发实战:如何进行语音识别
  • 2024年五一杯数学建模C题思路分析
  • 【代码】Python3|Requests 库怎么继承 Selenium 的 Headers (2024,Chrome)
  • JAVA程序设计-对象设计
  • 蓝桥杯2024年第十五届省赛真题-R 格式
  • Linux服务器硬件及RAID配置
  • 前端 vue单页面中请求数量过多问题 控制单页面请求并发数
  • HarmonyOS开发实例:【分布式手写板】
  • Unity TMP Inputfield 输入框 框选 富文本 获取真实定位
  • 如何在原生项目中集成flutter
  • 【设计模式】策略模式