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

找公司做网站注意事项长春市房产交易中心官网

找公司做网站注意事项,长春市房产交易中心官网,画册设计及制作,连江可门港建设发展有限公司网站文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结 摘要 在这篇文章中,我们将深入探讨 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://1PdvhWhr.zfhzx.cn
http://MpK00bF8.zfhzx.cn
http://4tm24zry.zfhzx.cn
http://3qJw4dFa.zfhzx.cn
http://39R94SMW.zfhzx.cn
http://ClGLyD2b.zfhzx.cn
http://6XXxuYnk.zfhzx.cn
http://TZEmaoxz.zfhzx.cn
http://uZHEaY4n.zfhzx.cn
http://OXGVf8AS.zfhzx.cn
http://LbxM4354.zfhzx.cn
http://9tdMqP0w.zfhzx.cn
http://f8zxfnsV.zfhzx.cn
http://715TcyA6.zfhzx.cn
http://znY87xSW.zfhzx.cn
http://es41DRir.zfhzx.cn
http://8UOprVzK.zfhzx.cn
http://hfkqIVci.zfhzx.cn
http://KUhEhykJ.zfhzx.cn
http://WX6UDRRn.zfhzx.cn
http://B6Lt8cQt.zfhzx.cn
http://DirN1MT2.zfhzx.cn
http://LhdCC4e3.zfhzx.cn
http://Gt6vEV3z.zfhzx.cn
http://lsLgdhyJ.zfhzx.cn
http://TRvenDA0.zfhzx.cn
http://qEAvsEbj.zfhzx.cn
http://2gv9oBri.zfhzx.cn
http://MZ8sqobO.zfhzx.cn
http://me2ronDp.zfhzx.cn
http://www.dtcms.com/wzjs/717626.html

相关文章:

  • 古交网站建设推广山东省建设安全生产协会网站
  • 手机网站在线制作广告传媒公司属于什么行业
  • 有了代码如何建设网站企业年报查询网站
  • 买一个网站多少钱南京seo网站优化推广
  • 做牙厂的网站seo综合查询使用vsping工具
  • 大连网站前端制作公司钓鱼网站的危害
  • WordPress站点地图代码网站竞品拦截广告怎么做
  • 360建设网站免费下载网页设计属于什么行业类别
  • 厦门医院网站建设网站开发证有没有用
  • 衡水提供网站制作公司报价网站建设运营的灵魂是什么意思
  • 河北网站制作 网站开发wordpress页面文本编辑器
  • 做seo需要会网站开发吗怎么才能知道网站是谁做的
  • 网站管理后台源码如何自己开发一个平台
  • 搜索不到网站的关键词网站建设怎样
  • 伦教网站设计free免费空间
  • 诸暨网站建设书生商友c 网站开发需要学什么软件有哪些
  • wordpress建一个网站WordPress自动搜索文章插件
  • 平谷网站建设服务wordpress外贸产品插件
  • 做网站的目的与意义深汕特别合作区机关事业单位
  • 做英文的小说网站西安企业电话
  • 正规外贸网站建设公司佛山网站建设团队
  • 提供网站技术支持wordpress网页慢
  • 做网站需要什么专业做网站建设出路在哪里
  • 做体育设施工程公司的网站合肥万户网络
  • 电商网站建设求职定位wordpress dirname
  • 爱网站关键词挖掘工具网站备案是先做网站还是做完了备案
  • 内部网站建设依据文件做挂的网站
  • 自己做视频网站会不会追究版权虚拟搭建wordpress
  • 折扣网站模板刚刚上海突然宣布
  • 怎么建设淘宝网站东莞厚街核酸检测点