美团笔试 Java

1.  AC, 输入 n 个点的坐标,求出所有满足: 该点上下左右都有点,的点
import java.util.*;

/**
 * @author xx
 * @data 4/23/20 6:47 PM
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<point> list = new ArrayList<>();
        sc.nextLine();
        for (int i = 0; i < n; i++) {
            String str = sc.nextLine();
            String[] t = str.split(" ");
            list.add(new point(Integer.parseInt(t[0]), Integer.parseInt(t[1])));
        }
        int count = 0;
        for (int i = 0; i < n; i++) {
            point cur = list.get(i);
            boolean up = false, down = false, left = false, right = false;
            for (int j = 0; j < n; j++) {
                if (j == i) {
                    continue;
                }
                point cur2 = list.get(j);
                if (cur2.x == cur.x) {
                    if (cur2.y > cur.y) {
                        up = true;
                    }
                    if (cur2.y < cur.y) {
                        down = true;
                    }
                }
                if (cur2.y == cur.y) {
                    if (cur2.x > cur.x) {
                        right = true;
                    }
                    if (cur2.x < cur.x) {
                        left = true;
                    }
                }
            }
            if (up && down && left && right) {
                count++;
            }
        }
        System.out.println(count);
    }
}

class point{
    int x;
    int y;

    public point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
2.  AC, 输入 一些 数,按照要求格式输出, 有整数, 负整数,小数,负小数,0
            // 三位一个 逗号 整数部分 从后向前 隔三位补 逗号
            // 小数两位, 够了直接舍掉, 不够补足,  
            // $  转换完了加 $           
            // 负数, 再加上括号,去掉负号 
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author xx
 * @data 4/23/20 7:47 PM
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<String> list = new ArrayList<>();
        while (sc.hasNextLine()) {
            String cur = sc.nextLine();
            if (cur.isEmpty()) {
                break;
            }
            list.add(cur.trim());
        }
//        List<String> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            // 三位一个 逗号
            // 小数两位, 直接舍掉
            // 负数, 先转化, 再加上括号,省略负号
            // $
            String cur = list.get(i);
            System.out.println(trans(cur));
        }

    }

    private static String trans(String cur) {
        StringBuffer sb = new StringBuffer("");
        boolean isFuShu = cur.charAt(0) == '-' ? true : false;
        if (isFuShu) {
            cur = cur.substring(1);
        }
        // 小数,整数,负整数,负小数或者零
        if (cur.indexOf('.') != -1) {  // 小数
            sb = xiao(cur);
        } else {
            sb = zheng(cur);
            sb.append(".00");
        }
        if (isFuShu) {
            sb.insert(0, '(');
            sb.append(')');
        }
        return String.valueOf(sb);
    }

    private static StringBuffer xiao(String cur) {
        int dianIndex = cur.indexOf('.');
        int len = cur.length();
        String tail;
        if (dianIndex == len - 1) {
            tail = "00";
        } else if (dianIndex == len - 2) {
            tail = cur.substring(dianIndex) + '0';
        } else {
            tail = cur.substring(dianIndex, dianIndex + 3);
        }
        StringBuffer left = zheng(cur.substring(0, dianIndex));
        left.append(tail);
        return left;
    }

    private static StringBuffer zheng(String cur) {
        StringBuffer res = new StringBuffer(cur);
        int count = 0;
        for (int j = cur.length() - 1; j >= 0; j--) {
            count++;
            if (count == 3 && j != 0) {
                res.insert(j, ',');
                count = 0;
            }
        }
        res.insert(0, '$');
        return res;
    }
}
3. 没看
4. 最优购买策略: 贪心把, n个产品  k 个人 每个产品有两个属性 price 和 id (1表示A产品,2表示B产品), 策略: 只买B 不打折, 买了(只要存在A) A 最便宜那个半价,求最少花多少钱
哭泣,不知道哪里错了 18%
import java.awt.*;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

/**
 * @author chenhong
 * @data 4/23/20 6:47 PM
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), k = sc.nextInt();
        int[] arr = new int[n];  // n 物品数量
        sc.nextLine();
        PriorityQueue<Point> pq = new PriorityQueue<>(new Comparator<Point>() { @Override public int compare(Point point, Point point2) {
                if (point.y == point2.y) {
                    return point2.x - point.x;
                } else {
                    return point.y - point2.y;
                }
            }
        });
        for (int i = 0; i < n; i++) {
            pq.add(new Point(sc.nextInt(), sc.nextInt()));
        }

        int count = 0;
        Point cur = pq.poll();
        while (k > 1 && !pq.isEmpty() && cur.y == 1) {  // 优先队列,在还剩下不止一个人的并且还有产品并且这个产品是A产品的时候,每一个人都只买A产品,这样都能打半价 if (cur.x % 2 == 0) {
                count += cur.x / 2;
            } else {
                count += cur.x / 2 + 0.5;
            }
            cur = pq.poll();
            k--;
        }
        // 不满足: k==1, pq 空 ; cur.y == 2
        if (cur.y == 2) {   // 不能半价了
            count += cur.x;
            while (!pq.isEmpty()) {
                count += pq.poll().x;
            }
        }else {   // 当前还是 A 产品,最低价格可以打半价
            count += cur.x;
            while (!pq.isEmpty()) {
                cur = pq.poll();
                count += cur.x;
            }
            if (cur.x % 2 == 0) {
                count -= cur.x / 2;
            } else {
                count -= cur.x / 2 + 0.5;
            }
        }
        System.out.format("%.2f", (float)count);
    }
}

class point{
    int x;
    int y;

    public point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

5. n个数据, & 结果为0 就输出 1, 否则没有和该数 & 结果为 0 的就输出 -1, 超时了 18%
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author chenhong
 * @data 4/23/20 6:47 PM
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        sc.nextLine();
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int[] res = new int[n];
        Arrays.fill(res, -1);
        for (int i = 0; i < n; i++) {
            if (res[i] == 1) {
                continue;
            }
            for (int j = i + 1; j < n; j++) {
                if (res[j] == 1) {
                    continue;
                }
                if ((arr[i] & arr[j]) == 0) {
                    res[i] = 1;
                    res[j] = 1;
                    break;
                }
            }
        }
        for (int i = 0; i < n; i++) {
            System.out.print(res[i] + " ");
        }
    }
}

#423美团笔试题##笔试题目#
全部评论
楼主,想问一下第二题的输入。测试用例是每一组都有多行输入吗?这样怎么判断输入结束呢?
点赞 回复 分享
发布于 2020-04-24 16:12
第二题我本地输入就过不去 迷惑
点赞 回复 分享
发布于 2020-04-24 14:29
请问第一题的第12行:sc.nextLine();是什么作用呀是换行么
点赞 回复 分享
发布于 2020-04-24 13:59
请问要点交卷吗。我时间到了自动提交了,会不会没有记录啊
点赞 回复 分享
发布于 2020-04-23 23:10
大佬大佬,我最后一题也是暴力,过了18%
点赞 回复 分享
发布于 2020-04-23 22:54
第四题,贪心:前k-1个尽量没人一个A,都打五折。剩下的一个人全买(当有k个及以上的A,去剩下的最便宜的打五折,否则累加就好了)
点赞 回复 分享
发布于 2020-04-23 22:12
美团笔试总共5道题,请问多少分能够进面试啊?
点赞 回复 分享
发布于 2020-04-23 22:08
大佬最后一个通过了18%嘛
点赞 回复 分享
发布于 2020-04-23 22:06

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题//&nbsp;实现一个解析&nbsp;url&nbsp;参数的函数function&nbsp;parseUrl(urlStr)&nbsp;{//&nbsp;TODO}parseUrl('*********************************************');//&nbsp;返回&nbsp;{a:&nbsp;1,&nbsp;b:&nbsp;2,&nbsp;c:&nbsp;3}追问:在链接里见过什么部分?用&nbsp;hash&nbsp;路由的话放在哪第二题//&nbsp;考虑有一个异步任务要执行,返回&nbsp;Promise,这个任务可能会失败,请实现&nbsp;retry&nbsp;方法,返回新方法,可以在失败后自动重试指定的次数。/***&nbsp;异步任务重试*&nbsp;@param&nbsp;task&nbsp;要执行的异步任务*&nbsp;@param&nbsp;times&nbsp;需要重试的次数,默认为&nbsp;3&nbsp;次*/function&nbsp;retry(task,&nbsp;times&nbsp;=&nbsp;3)&nbsp;{//&nbsp;TODO:&nbsp;请实现}//&nbsp;---------------测试示例&nbsp;----------------//&nbsp;原方法const&nbsp;request&nbsp;=&nbsp;async&nbsp;(data)&nbsp;=&gt;&nbsp;{//&nbsp;模拟失败if&nbsp;(Math.random()&nbsp;&lt;&nbsp;0.7)&nbsp;{throw&nbsp;new&nbsp;Error('request&nbsp;failed');}const&nbsp;res&nbsp;=&nbsp;await&nbsp;fetch(&#39;https://jsonplaceholder.typicode.com/posts&#39;,&nbsp;{method:&nbsp;'POST',body:&nbsp;JSON.stringify(data),});return&nbsp;res.json();}//&nbsp;新的方法const&nbsp;requestWithRetry&nbsp;=&nbsp;retry(request);//&nbsp;使用async&nbsp;function&nbsp;run()&nbsp;{const&nbsp;res&nbsp;=&nbsp;await&nbsp;requestWithRetry({&nbsp;body:&nbsp;'content'&nbsp;});console.log(res);}run();第三题就是给&nbsp;retry&nbsp;函数添加类型注释,用到泛型第四题:在组件库中将&nbsp;Alert&nbsp;用&nbsp;api&nbsp;的形式实现(应该就是&nbsp;message&nbsp;这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
1
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务