美团2025春招第一次笔试题

news2024/11/27 6:17:29

第四题

题目描述

塔子哥拿到了一个大小为的数组,她希望删除一个区间后,使得剩余所有元素的乘积未尾至少有k个0。塔子哥想知道,一共有多少种不同的删除方案?

输入描述

第一行输入两个正整数 n,k

第二行输入n个正整数 a_i,代表塔子哥拿到的数组

1<=n , k<= 10e5
1<= a_i<=10e9

输出描述

一个整数,代表删除的方案数

在这里插入图片描述

思路

数论+双指针

package meituan.chun2025_1;

import java.util.Scanner;



public class Main4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int[] nums = new int[n];
        long time_2 = 0,time_5 = 0;
        int now;
        for(int i=0;i<n;i++){
            nums[i] = in.nextInt();
             now = nums[i];
            while(now>=5&&now%5==0){
                now/=5;
                time_5++;
            }
            while(now>=2&&now%2==0){
                now/=2;
                time_2++;
            }
        }
        int left = 0;
        long result = 0;
        long now_time_2 = 0,now_time_5 =0;

        for(int i=0;i<n;i++){
             now = nums[i];
            while(now>=5&&now%5==0){
                now/=5;
                now_time_5++;
            }
            while(now>=2&&now%2==0){
                now/=2;
                now_time_2++;
            }
            long zero_now = Math.min(time_5-now_time_5,time_2-now_time_2);
            while(left<=i&&left<n&&zero_now<k){
                now = nums[left++];
                while(now>=5&&now%5==0){
                    now/=5;
                    now_time_5--;
                }
                while(now>=2&&now%2==0){
                    now/=2;
                    now_time_2--;
                }
                zero_now = Math.min(time_5-now_time_5,time_2-now_time_2);
            }
            result+=i-left+1;
        }
        System.out.println(result);

    }
}

第五题

题目描述

在这里插入图片描述

输入描述

在这里插入图片描述

输出描述

在这里插入图片描述

在这里插入图片描述

思路

在这里插入图片描述

package meituan.chun2025_1;

import java.util.*;

class UnionFind {
    private int[] parent;
    private int[] size;
    private int count;

    public UnionFind(int n) {
        this.parent = new int[n];
        this.size = new int[n];
        this.count = n;
        for (int i = 0; i < n; i++) {
            parent[i] = i;
            size[i] = 1;
        }
    }

    public int find(int p) {
        while (p != parent[p]) {
            parent[p] = parent[parent[p]];
            p = parent[p];
        }
        return p;
    }

    public void union(int p, int q) {
        int rootP = find(p);
        int rootQ = find(q);
        if (rootP == rootQ) {
            return;
        }
        if (size[rootP] > size[rootQ]) {
            parent[rootQ] = rootP;
            size[rootP] += size[rootQ];
        } else {
            parent[rootP] = rootQ;
            size[rootQ] += size[rootP];
        }
        count--;
    }

    public int getCount() {
        return count;
    }
}
class Function{
    public void Add(HashMap<Integer,HashSet<Integer>>  is_exist,int x, int y){
        int source = Math.max(x,y);
        int target = Math.min(x,y);
        HashSet<Integer> now_set = is_exist.getOrDefault(source,new HashSet<Integer>());
        now_set.add(target);
        is_exist.put(source,now_set);
    }

    public boolean isExist(HashMap<Integer,HashSet<Integer>>  is_exist,int x, int y){
        int source = Math.max(x,y);
        int target = Math.min(x,y);
        HashSet<Integer> now_set = is_exist.getOrDefault(source,new HashSet<Integer>());
        if (now_set.isEmpty())
            return false;
        if (!now_set.contains(target))
            return false;
        return true;
    }

    public void Remove(HashMap<Integer,HashSet<Integer>>  is_exist,int x, int y){
        int source = Math.max(x,y);
        int target = Math.min(x,y);
        HashSet<Integer> now_set = is_exist.get(source);
        now_set.remove(target);
    }
}
public class Main5 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int q = in.nextInt();
        int[][] relation = new int[m][2];
        UnionFind solution = new UnionFind(n+1);
        Function function = new Function();
        HashMap<Integer,HashSet<Integer>>  is_exist = new HashMap<>();
        HashMap<Integer,HashSet<Integer>>  is_forget = new HashMap<>();

        //input relation
        for(int i=0;i<m;i++){
            int x = in.nextInt();
            int y = in.nextInt();
            relation[i][0] = x;
            relation[i][1] = y;
            function.Add(is_exist,x,y);
        }

        //input op
        int[][] op = new int[n][3];
        for(int i=0;i<q;i++){
            op[i][0] = in.nextInt();
            op[i][1] = in.nextInt();
            op[i][2] = in.nextInt();
            if(op[i][0]==1)
                function.Add(is_forget,op[i][1],op[i][2]);
        }

                // add union
        for(int i=0;i<m;i++){
            if (!function.isExist(is_forget,relation[i][0],relation[i][1]))
                solution.union(relation[i][0],relation[i][1]);
        }

        Deque<Boolean> result = new LinkedList<>();
        for(int i=q-1;i>=0;i--){
            int[] now = op[i];
            if (now[0]==1){
                if (!function.isExist(is_exist,now[1],now[2]))
                    continue;
                function.Remove(is_exist,now[1],now[2]);
                solution.union(now[1],now[2]);
            }
            else
            {
                result.offerFirst(solution.find(now[1])==solution.find(now[2]));
        }
        }
        while(!result.isEmpty())
        {
            boolean now = result.pollFirst();
            if (now)
                System.out.println("Yes");
            else
                System.out.println("No");
        }

    }
    }


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

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

相关文章

教你用两种方式遍历循环python中的字典

开发中经常会用到对于字典、列表等数据的循环遍历&#xff0c;但是python中对于字典的遍历对于很多初学者来讲非常陌生&#xff0c;今天就来讲一下python中字典的循环遍历的两种方式。 注意&#xff1a; python2和python3中&#xff0c;下面两种方法都是通用的。 1. 只对键的…

电机特性学习

电机特性 电机堵转&#xff1a; 电机堵转的原理 玻璃升降器&#xff1a; 工作电压 升降器在 9V~16V 电压下应运行平稳,不允许有异音和卡滞现象。 工作电流 升降器的工作电流不大于 12A,堵转电流不大于 28A。 堵转 力 升降器 堵转 力应 不小于 212N。 玻璃升降器结构 电动车窗…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的日常场景下的人脸检测系统(附完整资源+PySide6界面+训练代码)

摘要&#xff1a;开发用于日常环境中的人脸识别系统对增强安全监测和提供定制化服务极为关键。本篇文章详细描述了运用深度学习技术开发人脸识别系统的全过程&#xff0c;并附上了完整的代码。该系统搭建在强大的YOLOv8算法之上&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性…

【数据结构】初识二叉搜索树(Binary Search Tree)

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的操作1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它可能是一棵空树&#xff0c;也可能是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&am…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

掌握Redis,看完这篇文章就够了!

目录 1.Redis介绍 2.Redis服务器与客户端 3.Redis配置文件 4.Redis数据类型操作 4.1使用python连接数据库 4.2 字符串 4.3 哈希 4.4 键对应操作 4.5 列表 4.6 集合 4.7 有序集合 1.Redis介绍 Redis 是一个开源的内存数据库&#xff0c;它提供了一个高性能的 key-val…

【java数据结构】HashMap和HashSet

目录 一.认识哈希表&#xff1a; 1.1什么是哈希表&#xff1f; 1.2哈希表的表示&#xff1a; 1.3常见哈希函数&#xff1a; 二.认识HashMap和HashSet: 2.1关于Map.Entry的说明:,> 2.2Map常用方法说明&#xff1a; 2.3HashMap的使用案例&#xff1a; 2.4Set常见方法…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Slider)

滑动条组件&#xff0c;通常用于快速调节设置值&#xff0c;如音量调节、亮度调节等应用场景。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Slider(options?: SliderOption…

【算法面试题】-06

智能成绩表 题目描述 小明来到学校当老师&#xff0c;需要将学生按考试总分或单科分数进行排名&#xff0c;你能帮帮他吗&#xff1f; 输入描述 第 1 行输入两个整数&#xff0c;学生人数 n 和科目数量 m。 0 < n < 100 0 < m < 10 第 2 行输入 m 个科目名称&…

14双体系Java学习之数组

数组 ★小贴士 数组中保存固定数量的值&#xff0c;声明数组时需要制定数组中元素的类型&#xff0c;数组的长度在创建数组时设定。 保存数据的数据结构有很多&#xff0c;Java的标准函数库中就包含了许多复杂的数据结构&#xff0c;比如map、tree和set&#xff0c;以后会讲解的…

数据结构·复杂度

目录 1 时间复杂度 2 大O渐进表示法 举例子&#xff08;计算时间复杂度为多少&#xff09; 3 空间复杂度 前言&#xff1a;复杂度分为时间复杂度和空间复杂度&#xff0c;两者是不同维度的&#xff0c;所以比较不会放在一起比较&#xff0c;但是时间复杂度和空间复杂度是用…

Ubuntu 安装腾讯会议

1.官网下载 进入腾讯会议下载官网下载腾讯会议Linux客户端 选择x86_64格式安装包下载 若不知道自己的系统架构,输入 uname -a 在命令行结果中查看系统架构信息 2.终端命令安装 cd {你的下载路径} sudo dpkg -i TencentMeeting_0300000000_3.19.0.401_x86_64_default.publi…

数据结构·二叉树(一)

1. 树概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;树叶朝下的。 有一个特殊的节点&#xff0c;称为根节点&#…

嵌入式系统工程师错题总结

笔者来介绍一下嵌入式系统工程师考试的一些易错题目 题目介绍  流水线指令计算公式&#xff1a;一条指令总时间max&#xff08;单个指令执行时间&#xff09;*&#xff08;指令数-1&#xff09;  平均故障间隔时间  ICMP协议&#xff1a;传送通信问题相关的消息。 …

sqlserver中将csv非空间数据(带点坐标)转为空间数据

1、导入csv数据 2、修改字段shape为空间字段 ALTER TABLE FJPOIHB66 ALTER COLUMN shape geometry;3、空间字段转字符串 UPDATE FJPOIHB66 SET shape geometry::STGeomFromText(CONVERT(nvarchar(254),shape), 4326);4、设置主键字段 5、即可

141 Linux 系统编程18,线程,ps –Lf 进程 查看LWP,线程间共享数据,优缺点,编译加-lpthread,

一 线程概念 什么是线程 LWP&#xff1a;light weight process 轻量级的进程&#xff0c;本质仍是进程(在Linux环境下) 进程&#xff1a;独立地址空间&#xff0c;拥有PCB 线程&#xff1a;有独立的PCB&#xff0c;但没有独立的地址空间(共享) 区别&#xff1a;在于是否共…

C++vector的模拟实现

文章目录 模拟实现1. 迭代器2. 容量操作&#xff08;1&#xff09;size和capacity&#xff08;2&#xff09;reserve&#xff08;3&#xff09; resize 3. 元素访问&#xff08;1&#xff09;下标 [ ] 4. 修改操作&#xff08;1&#xff09;push_back&#xff08;2&#xff09…

【死磕Elasticsearch】从实战中来,到实战中去

文章目录 写在前面&#xff1a;1、索引阻塞的种类2、什么时候使用阻塞&#xff1f;场景1&#xff1a;进行系统维护场景。场景2&#xff1a;保护数据不被随意更改场景。场景3&#xff1a;优化资源使用的场景。场景4&#xff1a;遵守安全规则场景。 3、添加索引阻塞API4、解除设置…

使用jquery的autocomplete属性实现联想补全操作

平时使用百度&#xff0c;淘宝等软件搜索时&#xff0c;常见一个搜索框联想提示&#xff0c;感觉确实好用但没有研究过原理&#xff0c;最近恰巧工作中遇到一个同样的场景&#xff0c;不同于大厂使用高端的Python&#xff0c;这次需要使用jQuery的autocomplete属性来自动联想补…

git撤回代码提交commit或者修改commit提交注释

执行commit后&#xff0c;还没执行push时&#xff0c;想要撤销之前的提交commit 撤销提交 使用命令&#xff1a; git reset --soft HEAD^命令详解&#xff1a; HEAD^ 表示上一个版本&#xff0c;即上一次的commit&#xff0c;也可以写成HEAD~1 如果进行两次的commit&#xf…