巧妙利用索引,类似操作和题目有很多。
最直观的做法是遍历,但这种方法的时间复杂度很高。
不妨用空间换时间。如果某数字出现过,hashTable[x]=true
而这道题用测试桌号作为hash表的索引,可以索引出学生信息,而学生信息是带着真正的考试桌号的。
题目要求:根据学生测试座位号,输出学生编号以及实际座位
示例:
输入
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出:
3310120150912002 2
3310120150912119 1
原本的思路是用map,多此一举。
Student s=new Student(str[0],Integer.parseInt(str[1]),Integer.parseInt(str[2]));
slist.add(s);
map.put(Integer.parseInt(str[1]),s);
事实上,这道题可以巧妙利用索引来实现。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine();
Student []slist=new Student[n+1]