A data structure for n elements and O(1) operations

本文介绍了一种特殊的数据结构设计,该结构能够实现插入、删除和查找操作的时间复杂度均为O(1)。通过使用固定大小的布尔数组来标记元素的存在状态,巧妙地解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GFG上的一道数据结构的题:

http://geeksquiz.com/data-structure-n-elements-o1-operations/

设计一个数据结构插入删除和查找都是O(1),存储 0 - n-1

最初想法是hashtable类似,基于链表,但是查找不可能为O(1), 看了gfg上的讲解才豁然开朗。大哭


Solution:

就是用一个数组实现,因为要存的数已知,0 到n-1,

数字 i 存在就把A[i] 设为true,mark

不存在就设为false

实现非常简单了


        boolean A[];
	public void initialize(int n){
		A = new boolean[n];
		Arrays.fill(A, false);
		//or no need to initialize in java 
	}
	//Insert an element
	public void insert(int i){
		A[i] = true;  
	}
	//Delete an element
	public void delete(int i){
		A[i] = false;
	}
	public int deletelement(int i){
		if(A[i] == true){
			A[i] = false;
			return 0;
		}else{
			return -1; // failure
		}
	}
	//Find an element
	public boolean find(int i){
		return A[i];
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值