4.9 美团笔试AK

每个题的详细思路慢慢补吧

第一题 (AC)

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Scanner;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        long yitiam=24*60L;

        Scanner sc = new Scanner(System.in);
        long day=sc.nextLong();//当前是第几天
        String str=sc.next();
        String[] split = str.split(":");
        long shi=Long.parseLong(split[0]);//当前的小时
        long fen=Long.parseLong(split[1]);//当前的分钟
        long qian=sc.nextLong();//要提前的时间
        long tot=0;
        qian%=(7L*yitiam);
        tot=yitiam*(day-1)+shi*60L+fen;

        tot=(tot+(7L*yitiam)-qian)%(7L*yitiam);

        day=tot/yitiam;
        day+=1;


        shi=(tot%(yitiam))/60L;
        fen=(tot%(yitiam))%60L;

        System.out.println(day);
        //if(shi<10) System.out.print("0");
        //System.out.print(shi+":");
        //if(fen<10) System.out.print("0");
        //System.out.println(fen);
        //更新输出方式
        System.out.printf("%02d:%02d",shi,fen);//0代表不足的部分用0补齐,2代表以两位整数的形式输出
    }
}

第二题(1发AC)

思路:

简单思维题吧

import java.util.HashMap;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int a[]=new int[n];
        int b[]=new int[n];
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i=0;i<n;i++)a[i]=sc.nextInt();
        for(int i=0;i<n;i++){
            map.put(a[i],i);
        }

        for(int i=0;i<n;i++)b[i]=sc.nextInt();
        int min=0;
        int ans=0;
        for(int i=n-1;i>=0;i--){
            if(i==n-1){
                min=map.get(b[i]);
                continue;
            }
            if(map.get(b[i])>min)ans++;
            min=Math.min(min,map.get(b[i]));
        }
        System.out.println(ans);
    }
}

第三题(1发AC)

思路

二分x,然后暴力判断即可

import java.util.HashMap;
import java.util.Scanner;

/**
 * @Author: Shang Huaipeng

 * @Version 1.0
 */

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        long n=sc.nextLong();
        long k=sc.nextLong();
        long l=1;
        long r=n+1;
        while(l<r){
            long mid=(l+r)/2;

            if(judge(mid,n,k))r=mid;
            else l=mid+1;
        }
        System.out.println(l);
    }

    private static boolean judge(long x,long n,long k){
        long tmp=x;
        while(n>0){
            n-=x;
            x/=k;
            if(x<=0)break;
        }

        return n<=0;
    }
}

第四题(AC)

思路:简单dp

这个题我严重吐槽,n=0的时候答案是1,我一直以为是0,发散思维是应该的,但是这种边界不说明一下吗?
本来一发就能过,最后交了20多发

#include<bits/stdc++.h>

using namespace std;

int main()
{
    long long mod=1000000007L;
    int n=0;
    cin>>n;
    long long tot[4];
    long long tmp[4];
    for(int i=0;i<4;i++){
        tot[i]=tmp[i]=0;
    }
    tot[0]=1;
    long ans=0;
    for(int t=0;t<n;t++){
        for(int i=0;i<4;i++)tmp[i]=tot[i];
        for(int i=0;i<4;i++){
            tot[i]=0;
            for(int j=0;j<4;j++){
                if(i==j)continue;
                tot[i]=(tot[i]+tmp[j]);
            }
            tot[i]%=mod;
        }
    }
    ans=tot[0];
    cout<<ans;
    return 0;
}

第五题(2发AC)

思路

暴力记录出现的次数即可

注意

美团这个笔试平台,java语言加上包名算错,第一发死这上面了

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * @Author: Shang Huaipeng

 * @Version 1.0
 */

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int k=sc.nextInt();
        String s[]=new String[k+1];
        boolean de[]=new boolean[k+1];
        for(int i=1;i<=k;i++){
            s[i]=sc.next();
        }
        String str="";
        LinkedList<Integer> sum = new LinkedList<>();
        for(int kkk=0;kkk<n;kkk++){
            str=sc.next();

            if(str.charAt(0)=='-'){
                de[Integer.parseInt(str.substring(1,str.length()))]=true;
            }
            else if(str.charAt(0)=='+'){
                de[Integer.parseInt(str.substring(1,str.length()))]=false;
            }
            else{
                int ans=0;
                String mo = str.substring(1, str.length());
                for(int i=1;i<=k;i++){
                    if(de[i])continue;
                    int index=0;
                    while(true){
                        int tmp=mo.indexOf(s[i],index);
                        //System.out.println(tmp);
                        if(tmp==-1)break;
                        index=tmp+1;
                        ans++;
                    }
                }
                sum.add(ans);
            }
        }
        for (Integer integer : sum) {
            System.out.println(integer);
        }
    }
}
#美团笔试##美团##笔试题目#
全部评论
好久没看到AK这个词了
1
送花
回复
分享
发布于 2020-04-09 21:40
&大佬!
点赞
送花
回复
分享
发布于 2020-04-09 21:47
秋招专场
校招火热招聘中
官网直投
看了下第五题,那应该是我自己想多了,我的思路: 前面和你一样,+和-操作是O(1)的 然后?把每一个母串都用map保存,同时存的还有对应子串的结果: {母串:{子串1:n1, 子串2:n2}} 然后估计是有bug没调出来
点赞
送花
回复
分享
发布于 2020-04-09 22:24
大佬
点赞
送花
回复
分享
发布于 2020-04-09 22:41
&太强了,大佬搞算法的吗
点赞
送花
回复
分享
发布于 2020-04-09 23:09
大佬是美团点评嘛?我估计就是被你给挤了
点赞
送花
回复
分享
发布于 2020-04-10 08:44
大佬牛逼啊,请问有题目吗?我也想看看
点赞
送花
回复
分享
发布于 2020-04-10 11:36
第1题的小时,分钟小与于10的时候,我竟然用字符串把0添加进去了,然后再去一次性输出,看到大佬的分步打印,哭了
点赞
送花
回复
分享
发布于 2020-04-10 11:52

相关推荐

祈求顺利毕业😁:简历很好了,多投吧牛油😂。主要是环境不好,大家也卷
点赞 评论 收藏
转发
19 31 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151686次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11204次浏览 101人参与
# OPPO开奖 #
19203次浏览 267人参与
# 和牛牛一起刷题打卡 #
18989次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203397次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4972次浏览 30人参与
# 不去互联网可以去金融科技 #
20404次浏览 256人参与
# 通信硬件薪资爆料 #
265924次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2227次浏览 34人参与
# 互联网公司评价 #
97692次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25037次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454878次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53903次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14645次浏览 349人参与
# 硬件人的简历怎么写 #
82286次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19398次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28108次浏览 248人参与
# 学历对求职的影响 #
161242次浏览 1804人参与
# 你收到了团子的OC了吗 #
538747次浏览 6387人参与
# 你已经投递多少份简历了 #
344242次浏览 4963人参与
# 实习生应该准时下班吗 #
96981次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务