当前位置: 首页 > wzjs >正文

温州做网站的公司有哪些搜索引擎技术基础

温州做网站的公司有哪些,搜索引擎技术基础,做网站手机软件,下载小程序安装环形数组 start 指向第一个有效元素的索引,end 指向最后一个有效元素的下一个位置索引。 注意: start是闭区间,先左移后赋值,先赋值(null)后右移;end是开区间,先赋值再右移,先左移再赋值(null…

环形数组

start 指向第一个有效元素的索引,end 指向最后一个有效元素的下一个位置索引。

注意: start是闭区间,先左移后赋值,先赋值(null)后右移;end是开区间,先赋值再右移,先左移再赋值(null)。

左移减一加size再取模,右移加一再取模。

JS代码实现:

class CycleArray {
constructor(size = 1) {this.size = size;this.arr = new Array(size);// start 指向第一个有效元素的索引,闭区间this.start = 0;// 切记 end 是一个开区间,// 即 end 指向最后一个有效元素的下一个位置索引this.end = 0;this.count = 0;
}resize(newSize) {// 创建新的数组var newArr = new Array(newSize);// 将旧数组的元素复制到新数组中for (var i = 0; i < this.count; i++) {newArr[i] = this.arr[(this.start + i) % this.size];}this.arr = newArr;// 重置 start 和 end 指针this.start = 0;this.end = this.count;this.size = newSize;
}// 在数组头部添加元素,时间复杂度 O(1)
addFirst(val) {// 当数组满时,扩容为原来的两倍if (this.isFull()) {this.resize(this.size * 2);}// 因为 start 是闭区间,所以先左移,再赋值this.start = (this.start - 1 + this.size) % this.size;this.arr[this.start] = val;this.count++;
}// 删除数组头部元素,时间复杂度 O(1)
removeFirst() {if (this.isEmpty()) {throw new Error("Array is empty");}// 因为 start 是闭区间,所以先赋值,再右移this.arr[this.start] = null;this.start = (this.start + 1) % this.size;this.count--;// 如果数组元素数量减少到原大小的四分之一,则减小数组大小为一半if (this.count > 0 && this.count == this.size / 4) {this.resize(this.size / 2);}
}// 在数组尾部添加元素,时间复杂度 O(1)
addLast(val) {if (this.isFull()) {this.resize(this.size * 2);}// 因为 end 是开区间,所以是先赋值,再右移this.arr[this.end] = val;this.end = (this.end + 1) % this.size;this.count++;
}// 删除数组尾部元素,时间复杂度 O(1)
removeLast() {if (this.isEmpty()) {throw new Error("Array is empty");}// 因为 end 是开区间,所以先左移,再赋值this.end = (this.end - 1 + this.size) % this.size;this.arr[this.end] = null;this.count--;// 缩容if (this.count > 0 && this.count == this.size / 4) {this.resize(this.size / 2);}
}// 获取数组头部元素,时间复杂度 O(1)
getFirst() {if (this.isEmpty()) {throw new Error("Array is empty");}return this.arr[this.start];
}// 获取数组尾部元素,时间复杂度 O(1)
getLast() {if (this.isEmpty()) {throw new Error("Array is empty");}// end 是开区间,指向的是下一个元素的位置,所以要减 1return this.arr[(this.end - 1 + this.size) % this.size];
}isFull() {return this.count === this.size;
}size() {return this.count;
}isEmpty() {return this.count === 0;
}
}
http://www.dtcms.com/wzjs/285020.html

相关文章:

  • 个人网站需要多大的网速网站优化外包找谁
  • 斗破苍穹制作公司北京seo课程
  • 微企免费做网站自己怎么做网站
  • 网站推广软件工具恩施seo整站优化哪家好
  • ps怎么做网站logo沪深300指数
  • 网站群建设的必要性做外贸网站的公司
  • 佛山网站建设找方维网络桂林网站设计制作
  • 桂阳网站定制下载百度2024最新版
  • 做布料的著名网站html网站模板免费
  • 做网站骗子免费的拓客平台有哪些
  • 邢台营销型网站制作江苏seo团队
  • 怎么做百度网站验证最新seo视频教程
  • 怎么优化网站百度一级代理商
  • 如何做机票预订网站seo是搜索引擎优化
  • 域名注册查询入口网址seo专业课程
  • 利用百度快照搜索消失的网站温州seo结算
  • 深圳网站制作公司嘉兴福州网站seo优化公司
  • 十大免费视频素材网站最大的推广平台
  • 在线网站制作系统源码网络推广网站电话
  • 档案网站建设的步骤数据网站有哪些
  • 宁津华企动力做网站的电话多少广东seo推广外包
  • 做推广用那个网站吗如何做网络销售平台
  • 龙元建设集团股份有限公司网站地址企业网站推广的形式有哪些
  • 没技术怎么做网站免费友情链接网
  • 做外贸女装有哪些网站有哪些有哪些实用的网络推广方法
  • 做画册可以参考哪些网站制作网页的步骤
  • 有谁知道教做空间的网站啊武汉seo培训
  • 珠海网站制作品牌策划网站为什么要seo?
  • 自贡网站开发公司贵州萝岗seo整站优化
  • 深圳营销培训班中国优化网