🔥 9.23 小米笔试面经 - 编程题 & 题解

alt

考试时间:2023-09-23(100分钟)

投递岗位: 测试开发

T1

小明有N袋糖果,每次可以从所有非空的糖果袋子中分别拿出x个糖果,x大于0日小于等于每个非空袋子中糖果的数量,如果想把所有的糖果拿完,最少需要拿几次?

输入描述

第一行为整数N,表示袋子数量。

第二行到第N+1行,每行一个整数,共N个整数,表示N个袋子中各自糖果的数量

1 <= N <=100

每袋糖果的数量<=100

输出描述

一个整数,表示最少拿取次数。

题解

import java.util.PriorityQueue;
import java.util.Scanner;

// P1
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        for (int i = 0; i < n; i++) {
            int num = in.nextInt();
            if (num > 0) queue.offer(num);
        }

        int times = 0;
        while (!queue.isEmpty()) {
            int x = queue.poll();

            PriorityQueue<Integer> temp = new PriorityQueue<>();
            while (!queue.isEmpty()) {
                int r = queue.poll() - x;
                if (r > 0) temp.offer(r);
            }
            queue = temp;
            times++;
        }

        System.out.println(times);
    }
}

T2

小明和小红相约以1~26这26个数字来对a~z这26个字母进行加密传输,即

1 -> a

2 -> b

...

25 -> y

26 -> z

现在希望能设计一种算法,给定一个数字序列,返回其有多少种解码方法。

输入描述

输入为一个由数字构成的字符串,长度不超过100,代表待解码序列。

输出描述

输出为一个整数,代表可行的解码方法数量

样例

输入:
13

输出:
2

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论
点赞 回复 分享
发布于 2023-09-26 08:26 湖北

相关推荐

点赞 评论 收藏
分享
Aurora23:属于挂一半,暂时进池子了,隔一段时间没有其他组捞的话就彻底结束了
点赞 评论 收藏
分享
评论
5
10
分享

创作者周榜

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