首页天道酬勤leetcode简单题,leetcode 两数之和

leetcode简单题,leetcode 两数之和

张世龙 05-06 11:39 98次浏览

如果您对队列有疑问,请在线查看上一个博客。 这是在Java中描述数据结构堆栈和队列的方法,也是堆栈和队列的常用方法

如果有固定大小的空间用于存储队列,则:

Front是团队领导,Rear是团队领导。 很明显这个空间很满。 现在,按顺序删除团队领导的要素:

可以看到,队列中的元素越少,未使用的空间越大,总空间的大小不变,因此最后一个空间已废弃。

为了使这个空间可持续,我们实际上可以这样做。

通过在每次删除头部时向前移动队列中的所有元素,可以很好地解决问题并完美地提高空间的利用。 然而,每次第一次删除一个元素时,按顺序进行后续元素的操作无疑增加了时间的复杂性。

因此,为了降低时间复杂度而设置检测队列大小与数组大小的关系的代码,并仅在满足该条件时依次进行有效的数据,从而不需要在每次删除头时都向前进行,能够在一定程度上降低时间复杂度。

当然,还有另一个解决办法。 也就是说,我们不需要把要素往前推。 只要更改以下头尾指针(如指针所示)的用法,使队列在逻辑上看起来像环即可。 这就是我们今天的主角——循环队列。

这是空队列,用于添加元素。 下面的环形队列图表的Rear方向有误。 Rear必须指向队列末尾的下一个,即空的第一个。

继续添加:

现在队列满了。 我们从头部删除元素:

如你所见,我们删除头部后,队列需要很多空间来插入新元素,也不需要元素向前移动。 那么,如何实现这个在逻辑上是环境的循环队列呢? 如果能更灵活地使用头尾指针就好了。

结合LeetCode第622个问题来看

leet代码. 622。

让我说明一下具体的实现。

公共类mycircularqueue {//数组实现循环队列专用int [ ] queue array; //记录团队开头的private int frontIndex; //记录团队最后位置的私有内读索引; 记录//队列长度私有int size; //构建方法publicmycircularqueue(intk ) ) { queueArray=new int[k]; 前端索引=0; rearIndex=0; size=0; //新元素publicbooleanenqueue(intvalue ) if ) size==queueArray.length ) { return false; }队列阵列[ rear index ]=value; size; rearindex=(rearindex1) % queueArray.length; 返回真; //元素公共布尔队列() if ) size==0) ) {返回假; }frontindex=(frontindex1) % queueArray.length; 大小- -; 返回真; //从团队开头获取元素,队列为空时为-1 public int Front () if ) size==0) { return -1; }返回队列阵列[前端索引]; (//获取队列结束元素,如果队列为空,则为- 1公共内部读取) ) if ) size==0) {返回- 1; //rearIndex始终指向第一个空下标,因此//要取结尾元素,必须取rearindex前面下标中的元素//rear index=(rear index=) //判断队列是否为空的公共布尔isempty () { return size==0; //队列为公共boolean is full () { return size==queueArray.length; }以上简要介绍了循环及其实现。 如果理解有偏差,请参阅评论区的指出。 谢谢

数据结构环形队列,数据结构 队列