1041 考试座位号 (15分)java实现(散列思想)

本文介绍了一种使用散列思想解决考试座位号查询问题的方法,通过将测试座位号作为hash表的索引,高效地查找学生编号及其实际座位。避免了全量遍历,降低了时间复杂度。同时探讨了散列函数的设计,包括直接定址法、平方取中法和除留余数法,并讨论了解决散列冲突的策略。
摘要由CSDN通过智能技术生成

巧妙利用索引,类似操作和题目有很多。
最直观的做法是遍历,但这种方法的时间复杂度很高。
不妨用空间换时间。如果某数字出现过,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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值