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

网站建设备案费用宁波seo企业网络推广

网站建设备案费用,宁波seo企业网络推广,新手学网站建设,群网站建设合同文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结 摘要 在这篇文章中,我们将深入探讨 LeetCode 第 251 题——“展开二维向量”的问题。通过 Swift 语言,我们不仅会提供可运行的示例代码,还会结合实际场景进行…

在这里插入图片描述
在这里插入图片描述

文章目录

    • 摘要
    • 描述
    • 题解答案
    • 题解代码分析
    • 示例测试及结果
    • 时间复杂度
    • 空间复杂度
    • 总结

摘要

在这篇文章中,我们将深入探讨 LeetCode 第 251 题——“展开二维向量”的问题。通过 Swift 语言,我们不仅会提供可运行的示例代码,还会结合实际场景进行分析,帮助大家更好地理解如何将二维数据结构展平成一维序列,并通过迭代器进行遍历。

描述

问题描述:设计并实现一个迭代器,用于遍历一个二维向量。该迭代器应支持以下操作:

  • next():返回二维向量中的下一个元素,并将指针向前移动一位。
  • hasNext():如果存在下一个元素,返回 true;否则,返回 false

示例

let vector2D = Vector2D([[1, 2], [3], [4]])
print(vector2D.next())    // 输出 1
print(vector2D.next())    // 输出 2
print(vector2D.next())    // 输出 3
print(vector2D.hasNext()) // 输出 true
print(vector2D.hasNext()) // 输出 true
print(vector2D.next())    // 输出 4
print(vector2D.hasNext()) // 输出 false

注意事项

  1. 你可以假设在调用 next() 时,至少存在一个下一个元素。
  2. 请确保在多个测试用例中,类变量不会被错误地保留。

题解答案

为了解决这个问题,我们需要创建一个 Vector2D 类,内部维护指向当前行和列的索引。通过 next() 方法获取当前元素,并移动索引;通过 hasNext() 方法检查是否还有剩余元素。

题解代码分析

以下是使用 Swift 实现的 Vector2D 类:

class Vector2D {private var vector: [[Int]]private var row: Intprivate var col: Intinit(_ vec: [[Int]]) {self.vector = vecself.row = 0self.col = 0moveToNext()}func next() -> Int {let result = vector[row][col]col += 1moveToNext()return result}func hasNext() -> Bool {return row < vector.count}private func moveToNext() {while row < vector.count && col >= vector[row].count {row += 1col = 0}}
}

代码解析

  1. 初始化:在 init 方法中,我们接受一个二维数组 vec,并初始化 rowcol 为 0。然后调用 moveToNext() 方法,跳过可能的空行。

  2. next() 方法:返回当前元素,并将 col 增加 1。然后调用 moveToNext(),确保索引指向下一个有效元素。

  3. hasNext() 方法:检查当前 row 是否小于 vector 的行数,以判断是否还有剩余元素。

  4. moveToNext() 方法:这是一个辅助方法,用于跳过空行,确保 rowcol 指向一个有效的元素。

示例测试及结果

让我们通过一个示例来测试我们的 Vector2D 类:

let vector2D = Vector2D([[1, 2], [3], [4]])
print(vector2D.next())    // 输出 1
print(vector2D.next())    // 输出 2
print(vector2D.next())    // 输出 3
print(vector2D.hasNext()) // 输出 true
print(vector2D.hasNext()) // 输出 true
print(vector2D.next())    // 输出 4
print(vector2D.hasNext()) // 输出 false

输出结果

1
2
3
true
true
4
false

时间复杂度

  • next() 方法:在最坏情况下,需要跳过多个空行,因此时间复杂度为 O(n),其中 n 是行数。
  • hasNext() 方法:同样,最坏情况下时间复杂度为 O(n)。

空间复杂度

该实现仅使用了常数级别的额外空间,因此空间复杂度为 O(1)。

总结

通过上述实现,我们成功地创建了一个能够遍历二维向量的迭代器。这个问题在实际开发中有广泛的应用,例如在处理数据库查询结果时,我们可能需要遍历多行多列的数据;又或者在处理多维数组时,需要将其展平成一维进行处理。希望这篇文章能帮助你更好地理解如何在 Swift 中处理类似的问题。

http://www.dtcms.com/wzjs/380752.html

相关文章:

  • 有没有专业做淘宝网站吗网站排名优化系统
  • 网站怎么免费注册快速排名seo软件
  • 常州网站seo百度知道小程序
  • 有哪些做电子商务的网站广告接单有什么平台
  • 深圳返利网站开发百度推广费用一天多少钱
  • wordpress培训模板虞城seo代理地址
  • 怎样查看别人的网站是怎么建设百度优化排名软件
  • 成都微信网站建设推广南京seo圈子
  • 怎么自己做充值网站哪里能搜索引擎优化
  • 南宁会员网站制作百度站长工具排名
  • 银川网站开发公司电话网络推广有哪些渠道
  • 明星网页制作模板seo搜索引擎优化招聘
  • 工作服定制灰色词优化培训
  • 抚顺市网站建设百度搜索推广操作简要流程
  • 兰州网站制作公司哪个好seo超级外链工具
  • 旅游网站建设设计公司seo推广软件
  • 百姓网征婚湖南网站建设推广优化
  • 北京专业快速建站制作如何做百度推广
  • 简述网站建设流程中的各个步骤厦门seo顾问
  • 大淘客做自己网站怎么做自媒体
  • 江苏省镇江市丹阳市疫情最新消息页面优化
  • 无锡 学校网站建设推广普通话标语
  • 中信建设有限责任公司海外法务厦门seo培训
  • vs做网站创建项目时选哪个上海百网优seo优化公司
  • wordpress源码网站主题情感营销
  • 北京网站建设市场微商软文
  • 做二手房的端口网站百度指数移动版怎么用
  • 佛山网站建设公司怎么样怎么自己刷推广链接
  • 网站建立不安全怎么设置通过百度关键词多少钱一个月
  • 建设银行网站首页公司机构网络推广是什么职位