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

电视直播网站建设上海推广服务

电视直播网站建设,上海推广服务,广东企业宣传片制作公司,网站制作软件小学Deque双端队列,一直在使用,却从未了解过源码。 内部逻辑其实很简单 可扩容数组循环队列,循环栈扩容倍数1.5,sizesize(size shr 1)只从两端存取元素 fun main() {val deque MyArrayDeque()repeat(16) {deque.addLast(it)}while …

Deque双端队列,一直在使用,却从未了解过源码。
内部逻辑其实很简单

  1. 可扩容数组
  2. 循环队列,循环栈
  3. 扩容倍数1.5,size=size+(size shr 1)
  4. 只从两端存取元素
fun main() {val deque = MyArrayDeque()repeat(16) {deque.addLast(it)}while (deque.isNotEmpty()) {println(deque.removeLast())}}class MyArrayDeque {// 存元素,不能存null,初始容量为16,避免频繁扩容,一次扩容1.5倍private var arr = arrayOfNulls<Int>(16)// 头尾节点,tail一直为nullprivate var head: Int = 0private var tail: Int = 0// 实际容量private var size: Int = 0fun addFirst(value: Int) {// 扩容grow()head = dec(head)arr[head] = valuesize++}fun addLast(value: Int) {// 扩容grow()arr[tail] = valuetail = inc(tail)size++}fun removeFirst(): Int {if (isEmpty()) {return -1}val res = arr[head]!!head = inc(head)size--return res}fun removeLast(): Int {if (isEmpty()) {return -1}tail = dec(tail)size--return arr[tail]!!}// 加一fun inc(i: Int) = if (i == arr.lastIndex) 0 else i + 1// 减一fun dec(i: Int) = if (i == 0) arr.lastIndex else i - 1// 扩容,内部不一定扩容private fun grow() {// 至少还有一个容量if (size < arr.size - 1) {return}// 一次扩容1.5倍val newArr = arrayOfNulls<Int>(arr.size + (arr.size shr 1))// 从0开始if (head < tail) {for (i in head..<tail) {newArr[i - head] = arr[i]}} else {// 临时下标var index = 0// 现存头部for (i in head..arr.lastIndex) {newArr[index++] = arr[i]}// 尾部移动后面for (i in 0..<tail) {newArr[index++] = arr[i]}}// 扩容后,head和tail重新计算arr = newArrhead = 0tail = size}fun size() = sizefun isEmpty() = size() == 0fun isNotEmpty() = size() > 0override fun toString(): String {if (size == 0) {return ""}val sb = StringBuilder()if (head < tail) {for (i in head..<tail) {if (sb.isNotEmpty()) {sb.append(", ")}sb.append(arr[i])}} else {for (i in head..arr.lastIndex) {if (sb.isNotEmpty()) {sb.append(", ")}sb.append(arr[i])}for (i in 0..<tail) {// 此时一定有至少一个元素,不用判断sb.append(", ").append(arr[i])}}return sb.toString()}
}
http://www.ds6.com.cn/news/116652.html

相关文章:

  • 代做通一样的网站淘宝代运营公司十大排名
  • 金融公司网站源码在线搜索引擎
  • 有哪些做ae小动效的网站手机管家一键优化
  • 如何利用视频网站做推广网站建设优化推广系统
  • 网站建设建站公司营业推广经典案例
  • 网站红色长沙市网站制作
  • 建设网站方案站长工具seo推广 站长工具查询
  • 做三个月网站广告收入如何制作网页设计
  • 手机网站用模版智慧营销系统平台
  • 网上电商教程新十条优化措施
  • 天津建设局网站首页百度左侧排名
  • 网站做的像会侵权吗网站名查询网址
  • 专业长春网站建设哪家好郑州网络营销推广
  • 网站在线制作百度seo优化排名软件
  • 乐清网站建设seo网络优化专员是什么意思
  • 科技网站模板社区推广
  • 静安建设网站网址收录网站
  • 网站提交网址网络互联网推广
  • 四川省城乡建建设人事考试网站我想做电商
  • 海口 网站 制作百度知道入口
  • 一个网站怎么做软件绍兴百度seo排名
  • wordpress打不开首页推广网站排名优化seo教程
  • 枣庄网站建设网站服务器查询
  • 做模型常说的d站是什么网站怎么做app推广和宣传
  • 做家具的网站360搜索指数
  • 低价网站制作顺德seo营销网站的设计标准
  • 前端做任务的网站百度推广怎么联系
  • 郑州网站建设推广优化广州aso优化公司 有限公司
  • 国内购物网站大全推广一个产品有哪些方式
  • 手机免费制作网站游戏推广对接平台