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

温州做网站的公司有哪些网络推广优化seo

温州做网站的公司有哪些,网络推广优化seo,移动端网站开发公司,创意福州网站建设环形数组 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/480733.html

相关文章:

  • 郴州网站seo百度推广运营工作是什么
  • 建网站一定要买服务器和域名吗百度推广登录后台登录入口
  • 做网站注册页面模板张家界网站seo
  • 网站做sem推广时要注意什么意思宁波seo博客
  • 中国建筑网官网招聘信息西安专业seo
  • 网页的创新型网站策划百度优选官网
  • 那个网站做车险分期崇左网站建设
  • crm软件管理系统简述seo
  • 免费可以做旅游海报 的网站上海高玩seo
  • JavaScript做的网站网站维护工作内容
  • 网站的组成营销与销售的区别
  • 襄垣网站建设成都关键词排名推广
  • 网站维护服务基本内容北京官网seo
  • 如何黑掉jsp做的网站郑州seo优化大师
  • 网站建设 中企动力幽默软文广告经典案例
  • 徐州哪有做网站的seo 页面链接优化
  • 佛山 顺德网站设计唐山seo排名外包
  • 红酒集团网站建设常见的网络营销平台有哪些
  • wordpress字體調整控制乐天seo培训中心
  • 大气好寓意的广告公司名字sem对seo的影响有哪些
  • 网页app开发培训班图片优化
  • WordPress版本更新提醒前端seo是什么意思
  • 怎么看网站用什么代码做的广州seo关键词优化费用
  • 涿州网站网站建设关键词挖掘方法
  • 怎么做网站评论色盲测试图 考驾照
  • 建设项目环保备案登记网站河南网站建设公司哪家好
  • 唐山做企业网站公司下载百度软件
  • 网站怎样做支付接口乔拓云智能建站
  • 网站建设软文上海最新新闻事件今天国内
  • 电信网站备案员工培训内容