[NOIP2017]图书管理员
题目描述
思路
图书编码和需求码都不超过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]); } } }