欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

广脸达笔试复盘7.29

程序员文章站 2022-12-20 16:16:39
1.杰夫非常喜欢种草,他自己有一片草地,为了方便起见,我们把这片草地看成一行从左到右,并且第 i 个位置的草的高度是hi。杰夫在商店中购买了m瓶魔法药剂,每瓶魔法药剂可以让一株草长高x,杰夫希望每次都能有针对性的使用药剂,也就是让当前长得最矮的小草尽量高,现在杰夫想请你告诉他在使用了m瓶魔法药剂之后,最矮的小草在这种情况下最高能到多少。输入描述第一行三个整数n, m, x分别表示小草的个数,魔法药剂的个数以及每瓶魔法药剂让小草长高的高度。(1≤n,m,x≤1e5) 第二行n个整数分别表示第i株小草的...

1.杰夫非常喜欢种草,他自己有一片草地,为了方便起见,我们把这片草地看成一行从左到右,并且第 i 个位置的草的高度是hi。
杰夫在商店中购买了m瓶魔法药剂,每瓶魔法药剂可以让一株草长高x,杰夫希望每次都能有针对性的使用药剂,也就是让当前长得最矮的小草尽量高,现在杰夫想请你告诉他在使用了m瓶魔法药剂之后,最矮的小草在这种情况下最高能到多少。

输入描述
第一行三个整数n, m, x分别表示小草的个数,魔法药剂的个数以及每瓶魔法药剂让小草长高的高度。(1≤n,m,x≤1e5) 第二行n个整数分别表示第i株小草的高度ai。(1≤ai≤1e9) 输出描述
使用了m瓶药剂之后最矮的小草的最高高度。

public static void main(String[] args) {
        PriorityQueue<Integer> priorityQueue = new PriorityQueue();
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();//小草个数
        int m = cin.nextInt();//药剂数量
        int x = cin.nextInt();//药剂的药效

        for (int i = 0; i < n; i++) {
            int high = cin.nextInt();
            priorityQueue.add(high);
        }
        while (m-->0){
            int low = priorityQueue.peek();
            priorityQueue.remove(low);
            priorityQueue.add(low+x);
        }

        System.out.println("药剂用完后的最矮小草的高度为:"+priorityQueue.peek());

    }

题目描述:
我们希望一个序列中的元素是各不相同的,但是理想和现实往往是有差距的。现在给出一个序列A,其中难免有些相同的元素,现在提供了一种变化方式,使得经过若干次操作后一定可以得到一个元素各不相同的序列。
这个操作是这样的,令x为序列中最小的有重复的数字,你需要删除序列左数第一个x,并把第二个x替换为2*x。
请你输出最终的序列。
例如原序列是[2,2,1,1,1],一次变换后变为[2,2,2,1],两次变换后变为[4,2,1],变换结束

输入描述
输入第一行包含一个正整数n,表示序列的长度为n。(1<=n<=50000) 第二行有n个整数,初始序列中的元素。(1<=a_i<=10^8) 输出描述
输出包含若干个整数,即最终变换之后的结果。

 public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        int[] arr = new int[n];
        for(int i = 0;i < n; i++){
            arr[i] = cin.nextInt();
        }
        TreeSet<Integer> set = new TreeSet<>((x,y)->(y-x));
        for(int num:arr){
            boolean b = set.add(num);
            while (!b){
                set.remove(num);
                num = num*2;
                b=set.add(num);
            }
        }
        System.out.print("操作后:");
        for (Integer num:set
             ) {
            System.out.print(num+" ");
        }

3.堆积木

本文地址:https://blog.csdn.net/Iloveyshsh/article/details/107681412

相关标签: 笔试面试