【备战秋招】每日一题:4月8日美团春招(三批)第一题:题面+题目思路 + C++/python/js/Go/java带注释

news2024/12/19 10:34:23

2023大厂笔试模拟练习网站(含题解)

www.codefun2000.com
最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。
在这里插入图片描述
提交链接:

https://codefun2000.com/p/P1166

为了更好的阅读体检,可以查看OJ上的题解。进入提交链接,点击右边菜单栏的"查看塔子哥的题解"

题目内容

塔子哥所在的班级是一所小学,在教学楼的二楼。教学楼共有三个楼层,一楼是食堂和礼堂,二楼和三楼则是教室。塔子哥的班级坐落在教学楼的正中央,塔子哥班级的座位排成了 n n n 行(行从 1 1 1 n n n 编号),共有 m m m 个大列(大列从 1 1 1 m m m 编号),每个大列中有 a a a 个小列(小列从 1 1 1 a a a 编号),大列与大列之间有一个过道。

班主任规定每周进行一次座位调整,为了使同学们有机会结交不同的同学,每周的座位调整遵循特定的规则,具体规则如下:

  1. 首先所有同学都换到后一行,最后一行的同学换到第一行。即对于坐在第 i < n i\lt n i<n 行的同学,新位置在第 i + 1 i+1 i+1 行,如果 i = n i=n i=n ,那么新位置在第一行;
  2. 然后所有同学都移动到自己右边的那个大列的相同小列上,在最右大列的同学移动到最左大列。即对于坐在第 j < m j\lt m j<m 大列的同学,新位置在第 j + 1 j+1 j+1 大列,如果 j = m j=m j=m ,那么新位置在第一大列;对于坐在第 k k k 小列的同学,新位置仍然在第 k k k 小列。

然而,学校最近购进了新型的学生桌椅,这些桌椅可以调节高度,有些同学把桌子的高度调高了,而有些同学则没有。于是,在座位调整后,如果一位调整过桌子高度的同学坐到了没有调整过桌子高度的同学的位置,他会调整新位置的桌子到他想要的高度;同样地,如果一位没有调整过桌子高度的同学坐到了调整过桌子高度同学的位置,他也会调整新位置的桌子高度,使其恢复原高度。

现在塔子哥的班级要进行换座位了,给出换座位前班级所有桌子的情况,塔子哥想知道,换一次位置后,有多少同学需要重新调整桌子高度。

输入描述

输入第一行包含三个数 n n n m m m a a a ,意义如题目所示。

接下来 n n n 行,每行 m m m 个长度为 a a a 01 01 01 字符串,表示目前塔子哥班上的桌子情况。其中 0 0 0 表示这个位置未调节桌子高度, 1 1 1 表示已调节桌子高度。

对于全部数据, 1 ≤ n , m ≤ 200 , n × m ≥ 2 , 1 ≤ a ≤ 5 1\le n,m \le 200,n \times m\ge2,1\le a \le 5 1n,m200,n×m2,1a5

输出描述

输出一行一个整数,表示换座位后有多少同学需要重新调整桌子高度。

样例

输入

3 3 2
01 10 00
10 00 11
01 00 00

输出

8

思路:暴力模拟

对于每个人,其大行和大列每次增加 1 1 1,假设当前位置为 ( i , j ) (i, j) (i,j),则下一次位置为 ( i + 1 , j + 1 ) (i + 1, j + 1) (i+1,j+1)。小列每次不变,故比较这两个位置中小列不同的即可。

时间复杂度: O ( n m a ) O(nma) O(nma)

类似题目推荐

点评:总体来讲,一道比较简单的签到题。这里主要总结了各个公司2022/23年的类似的不需要脑子的暴力签到题

LeetCode

往届Leetcode周赛/双周赛的第一题

CodeFun2000

1.P1041 华为od-面试真题 2022.10.9-句子的平均重量

2.P1118 阿里巴巴 2023.03.26-第二题-报数字

3.P1174 华为od 2023.04.08–第一题-箱子之形摆放

4.P1175 华为od 2023.04.08–第二题-新学校选址

5.P1246 美团 2023.04.23-春招-第二题-制作骰子

代码

技巧使用

1.循环移位(circular shift)

对于矩阵中的每一个元素,因为需要和右下方的元素进行比较。所以为了避免数组下标越界,使用取模运算来实现循环移位。

2.逻辑等

ans += (s[i][j][k] != s[(i + 1) % n][(j + 1) % m][k])

这样的表达式省去了写if , else 的逻辑。但是工程项目中是否推荐使用,待商榷。

C++

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, m, a;
    cin >> n >> m >> a;
    vector<vector<string>> s(n, vector<string>(m));
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            cin >> s[i][j];
    int ans = 0;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j) {
            string& s1 = s[i][j];
            // 取模
            string& s2 = s[(i + 1) % n][(j + 1) % m];
            for (int k = 0; k < a; ++k) {
                ans += (s1[k] != s2[k]);
            }
        }

    cout << ans << "\n";
    
    return 0;
}

python

n, m, a = map(int, input().split(" "))
s = [[] for i in range(n)]

for i in range(n):
    s[i] = input().split(" ")

ans = 0
for i in range(n):
    for j in range(m):
        for k in range(a):
            # 利用 逻辑表达式 + 取模 简化代码
            ans += (s[i][j][k] != s[(i + 1) % n][(j + 1) % m][k])

print(ans)

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 a = scanner.nextInt();
        String[][] s = new String[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                s[i][j] = scanner.next();
            }
        }
        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                for (int k = 0; k < a; k++) {
                    // 利用 逻辑表达式 + 取模 简化代码
                    ans += (s[i][j].charAt(k) != s[(i + 1) % n][(j + 1) % m].charAt(k)) ? 1 : 0;
                }
            }
        }
        System.out.println(ans);
    }
}

Go

package main
import (
    "os"
    "fmt"
    "bufio"
)
func main(){
    in:=bufio.NewReader(os.Stdin)
    var n,m,a int
    fmt.Fscan(in,&n,&m,&a)
    v:=make([][]string,n+1)
    for i:=0;i<n;i++{
        v[i]=make([]string,m+1)
        for j:=0;j<m;j++{
            fmt.Fscan(in,&v[i][j])
        }
    }
    ans:=0
    for i:=0;i<n;i++{
        for j:=0;j<m;j++{
            var s,e string
            s=v[i][j]
            // 取模技巧
            e=v[(i+1)%n][(j+1)%m]
            for k:=0;k<len(s);k++{
                if s[k]!=e[k]{
                    ans++
                }
            }
        }
    }
    fmt.Println(ans)
}

Js

process.stdin.resume();
process.stdin.setEncoding('utf-8');
let input = '';
process.stdin.on('data', (data) => {
    input += data;
    return;
});
process.stdin.on('end', () => {
    const lines = input.trim().split('\n');
    const [n, m, a] = lines[0].trim().split(' ').map(x => Number(x));
    const s = new Array(n);
    for (let i = 0; i < n; ++i) {
        s[i] = lines[i + 1].trim().split(' ');
    }
    let ans = 0;
    for (let i = 0; i < n; ++i) {
        for (let j = 0; j < m; ++j) {
            const s1 = s[i][j];
            // 取模
            const s2 = s[(i + 1) % n][(j + 1) % m];
            for (let k = 0; k < a; ++k) {
                ans += (s1[k] !== s2[k]);
            }
        }
    }
    console.log(ans);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之反向动力学IK

1、如何使用 &#xff08;1&#xff09;给物体的父对象加上IK Manager的脚本 &#xff08;2&#xff09;在人物四肢骨骼末端和权杖末端创建空对象 &#xff08;3&#xff09;添加IK节点 选择Player 添加后会发现出现了一个Player的子对象IK节点 将权杖末端的GameObject拖入…

deepin搭建go开发环境(git、go、neovim、NvChad、Nerd Font)

安装deepin虚拟机 官网下载地址 vmware中记得版本选择是debian 10.x 64位 然后就是一些确认操作&#xff0c;然后就可以了 安装git apt install gedit apt install git git config --global user.name "hello" git config --global user.email hello126.com git c…

Nginx之location与rewrite

Nginx之location与rewrite 一.location location 对访问的路径做访问控制或者代理转发1.匹配分类 精准匹配&#xff1a; location / {...} 前缀匹配&#xff1a; location ^~ / {...} 正则匹配&#xff1a; location ~ / {...} location ~* / {...} 部分…

直播带货APP小程序系统开发功能有哪些?

直播带货APP小程序系统开发功能有哪些&#xff1f; 1、直播带货&#xff1a;主播一边带货一边直播间活跃气氛&#xff0c;直观地了解产品&#xff0c;下单的概率会更高。还集有观看、打赏、购物、分享于一体。 2、短视频带货&#xff1a;短视频种草&#xff0c;利…

图数据库(一):Neo4j入门

什么是Neo4j 我们可以看一下百度百科对其的定义&#xff1a;Neo4j是一个高性能的,NOSQL图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎&#xff0c;但是它将结构化数据存储在网络(从数学角度…

北京云服务器安装anaconda、cuda、cudnn、torch流程

安装顺序&#xff1a;Anaconda->cuda->cudnn ->torch(根据cuda安装torch) 1读取anaconda module load anaconda/2020.11 2读取cuda cudnn module load cuda/11.1 cudnn/8.2.1_cuda11.x (查看cuda版本: nvcc -V) 3运行脚本 sbatch train.sh 脚本写法 #!/bin/bash #SB…

Nextcloud私有云 - 零基础搭建私有云盘

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章&#xff1a;使用Nextcl…

hash传递攻击

简介 Pass the hash也就是Hash传递攻击&#xff0c;简称为PTH。模拟用户登录不需要用户明文密码只需要hash值就可以直接来登录目标系统。 利用前提条件是&#xff1a; 开启445端口开启ipc$共享 Metasploit pesexec模块 windows/smb/psexec 这里主要设置smbuser、smbPass …

Docker镜像与Docker容器详解

文章目录 Docker帮助信息Docker镜像拉取镜像镜像仓库官方与非官方镜像仓库 拉取指定标签的镜像为镜像打多个标签搜索镜像镜像和分层共享镜像层根据摘要拉取镜像删除镜像总结 Docker容器启动一个简单的容器容器进程容器生命周期优雅的退出容器利用重启策略进行容器的自我修复Web…

7. JVM调优实战及常量池详解

JVM性能调优 1. 阿里巴巴Arthas详解1.1 Arthas使用 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点纠正&#xff0c;勿喷。 课程内容&#xff1a; 1、阿里巴巴Arthas调优工具详解 2、GC日志详解与调优分析 3、Class常量池与运行…

氟化物选择吸附树脂Tulsimer ®CH-87 ,锂电行业废水行业矿井水除氟专用树脂

氟化物选择吸附树脂 Tulsimer CH-87 是一款去除水溶液中氟离子的专用的凝胶型选择性离子交换树脂。它是具有氟化物选择性官能团的交联聚苯乙烯共聚物架构的树脂。 去除氟离子的能力可以达到 1ppm 以下的水平。中性至碱性的PH范围内有较好的工作效率&#xff0c;并且很容易再生…

Ingress详解

Ingress Service对集群外暴露端口两种方式&#xff0c;这两种方式都有一定的缺点&#xff1a; NodePort &#xff1a;会占用集群集群端口&#xff0c;当集群服务变多时&#xff0c;缺点明显LoadBalancer&#xff1a;每个Service都需要一个LB&#xff0c;并且需要k8s之外设备支…

[洛谷]P2960 [USACO09OCT]Invasion of the Milkweed G(BFS,坑点多多)

、1&#xff1a;坐标是反的&#xff0c;&#xff08;1&#xff0c;1&#xff09;是在左下角&#xff0c;正常在右上角&#xff0c;所用建图的时候要小心 2&#xff1a; 加node(),搭配 中的构造 3&#xff1a; 不用判断位置是否越界&#xff0c;数组从1&#xff0c;1开始&…

网络安全通信HTTPS原理

背景 HTTPS并不是一个全新的协议&#xff0c;而是为了保证网络通信的数据安全&#xff0c;在HTTP的基础上加上了安全套件SSL的一个数据通信协议。 HTTP协议全称为HyperText Transfer Protocol即超文本传输协议&#xff0c;是客户端浏览器与Web服务器之间的应用层通信协议。HT…

秘钥失效问题

一、发现问题 问题如下图代码&#xff1a; $ ssh root108.61.163.242 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is …

前端入门学习

封装axios axios的基础使用 axios基础使用方法&#xff1a; axios.create({config}) //创建axios实例 axios.get(url,{config}) //get请求 axios.post(url, data,{config}) //post请求 axios.interceptors.request.use() // 请求拦截器 axios.interce…

华为OD机试真题 Java 实现【高矮个子排队】【2023Q2 100分】,附详细解题思路

一、题目描述 现在有一队小朋友&#xff0c;他们高矮不同&#xff0c;我们以正整数数组表示这一队小朋友的身高&#xff0c;如数组{5,3,1,2,3}。 我们现在希望小朋友排队&#xff0c;以“高”“矮”“高”“矮”顺序排列&#xff0c;每一个“高”位置的小朋友要比相邻的位置高…

工业相机分类、相关参数含义

一、工业相机参数 1、分辨率 分辨率是相机最基本的参数&#xff0c;由相机所采用的芯片分辨率决定&#xff0c;在采集图像时&#xff0c;相机的分辨率对检测精度有很大的影响&#xff0c;在对同样大的视场&#xff08;景物范围&#xff09;成像时&#xff0c;分辨率越高&…

高阶数据结构 ——— 图

文章目录 图图的基本概念图的存储结构邻接矩阵邻接表 图的遍历广度优先遍历深度优先遍历 最小生成树Kruskal算法Prim算法 最短路径单源最短路径-Dijkstra算法单源最短路径-Bellman-Ford算法多源最短路径-Floyd-Warshall算法 图 图的基本概念 图的基本概念 图是由顶点集合和边的…

【软件测试】cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系&#xff01;最近这仨玩意搞得头有点大 为什么会有它们三个 我们都知道 HTTP 协议是无状态的&#xff0c;所谓的无状态就是客户端每次想要与服务端通信&#xff0c;都必须重新与服务端链接&#xff0c;意味着请求一次客户…