[NOIP2017]图书管理员

题目链接:https://ac.nowcoder.com/acm/problem/16422

题目描述

思路

图书编码和需求码都不超过10,000,000,因此,使用Integer类型完全存放得下。

先输入图书编码,并保存至List中;

再输入需求码,对于每个需求码,遍历图书编码List,如果当前元素以需求码为结尾,那么将当前元素转成Integer并更新结果;

由于Java中Lambda表达式中引用的外部变量不可修改,所以使用一个int[]arr来作为容器,arr[0]作为结果。这样一来,只要arr引用的地址不变,那么arr就不算被修改,arr指向的地址中存放的值的变化,也不会影响语法

代码实现

import java.util.*;
import java.text.*;
import java.io.*;

public class Main{
    public static void main(String[]args){
        Scanner in=new Scanner(System.in);
        // 第一行
        int n=in.nextInt();
        int q=in.nextInt();
        in.nextLine();
        // 接下来的n行
        List<String>books=new ArrayList<>();
        int bk=0;
        for(int i=0;i<n;i++){
            bk=in.nextInt();
            books.add(bk+"");
        }
        in.nextLine();
        // 接下来q行
        for(int i=0;i<q;i++){
            String[] line=in.nextLine().split(" ");
            int[]arr=new int[1];
            arr[0]=Integer.MAX_VALUE;
            books.forEach((e)->{
                if(e.endsWith(line[1]))
                    arr[0]=Math.min(arr[0],Integer.parseInt(e));
            });
            System.out.println(arr[0]==Integer.MAX_VALUE?-1:arr[0]);
        }
        
        
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务