文件传输-字节跳动题

因为在网上看了这个题,没有java语言写的,我就用java写了一份(题目来源于网络)
题目描述
服务器在做数据备份,需要传输一批文件。在任意时间只能有一个文件被传输,一个文件传输需要一秒。
现在有n批文件,我们知道这批文件加入传输队列的时间(单位:秒),以及这批文件的个数C。
传输队列中的文件会以一秒一个文件的速度进行传输。
现在负责传输文件的同学想知道,所有文件被传输完的时刻,以及传输队列中文件堆积最大数量。

输入描述
第一行一个整数n,代表有n批文件。
接下来n行每行两个整数t,c,代表这批文件加入队列时间和这批文件的个数。

对于50%的数据
1<= n <=10^3
1<= t, c <= 10^6

对于50%的数据
1<= n <=10^5
1<= t, c <= 10^9

输出描述
输出一行两个整数,所有文件被传输完的时刻和传输队列文件堆积的最大数量。

示例1
输入
3
1 1
2 1
3 1
输出
4 1
示例1说明
1秒时第一批文件到来,一个文件被加入队列;
2利时第二批文件到来,此时队列中那个文件已经传完成,文件加入队列后队列内文件数仍然是1;
3秒时同理;
4秒时第三批的文件传输完成。

示例2
输入
3
1 3
2 3
3 3
输出
10 7
主要的思路在于文件的上送前后的差值,注意需要排序,题中没说是按照顺序。

import java.util.*;

public class Main7 {

    static class heap{
        int time;
        int num;

        public heap(int time, int num) {
            this.time = time;
            this.num = num;
        }
    }

    static int heap_time = 0;
    static long heap_sum = 0;

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        List<heap> list = new ArrayList<>();
        int n = in.nextInt();
        for (int i = 0; i < n; i++) {
            list.add(new heap(in.nextInt(),in.nextInt()));
        }

        Collections.sort(list, new Comparator<heap>() {
            @Override
            public int compare(heap o1, heap o2) {
                return o1.time - o2.time;
            }
        });

        heap_time = list.get(0).time + + list.get(0).num;
        heap_sum = list.get(0).num;
        for (int i = 1; i < list.size(); i++) {
            int i1 = heap_time - list.get(i).time;
            if(i1 == 0){
                heap_time += list.get(i).num;
            }else if(i1 > 0 ){
                heap_time = heap_time + list.get(i).num;
                heap_sum = Math.max(i1+list.get(i).num,heap_sum);
            }else {
                heap_time = heap_time + (-1 * i1) + list.get(i).num;
                heap_sum = Math.max(list.get(i).num,heap_sum);
            }
        }
        System.out.println(heap_time+" "+heap_sum);

    }

}

发布了11 篇原创文章 · 获赞 8 · 访问量 1583

猜你喜欢

转载自blog.csdn.net/weixin_44627238/article/details/104877575