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

【Swift】LeetCode 128. 最长连续序列

128. 最长连续序列

在这里插入图片描述

题目描述

请添加图片描述

思路 and Swift 题解

基于这道题目,我们来对 Swift 当中的 Set 数据结构进行学习。解决这道题目的思路不难,首先,我们应该将nums数组当中的元素存储到一个集合当中。之后,我们对集合当中的数值进行遍历,取num为每次遍历的数值,不妨令集合的名称为st,如果st当中不包含num - 1这个数值,就开始寻找一次答案。在寻找的过程中,令currNum为当前数值numcurrLen初始化为 0 表示当前找到的最长连续子序列的长度。如果currNum存在于st当中,那么currLen ++,同时currNum ++

我们如何用 Swift 解决这道题目呢?思路其实也很简单,首先我们声明一个集合,它的类型是Int,并且我们希望直接以nums数组作为输入来初始化集合,Swift 支持这种用法(很像是 C++ 当中基于 Vector 的开始与尾后指针初始化一个 Set,但 Swift 更简单):

var st = Set<Int>(nums)

之后对集合当中的元素进行遍历,直接使用 for-loop 即可:

for num in st {... ... ...
}

然后,我们需要判断元素是否存在于集合当中,使用 Swift Set 内置的contains方法即可:

for num in st {if !st.contains(num - 1) {... ... ...}
}

再然后,我们需要判断currNum是否存在于st当中,这个判断条件显然应该放在一个循环里,当条件不成立时循环需要停止。与 Golang 不同,Swift 不仅仅有 for 一种循环方式,它还有 while 循环:

for num in st {if !st.contains(num - 1) {var currNum = num, currLen = 0		// 注意, 多变量在声明时, 其声明方法与 Golang/Python 都不同, 不能写成 var currNum, currLen = num, 0. 而是应该分别声明与初始化, 与 C/C++ 相同while st.contains(currNum) {currNum += 1currLen += 1}// ... ... ...}
}

需要注意的一点是,++/--运算符在 Swift 3.0+ 当中已经被移除。

每次进入if条件句之后,在语句块结束之前,使用ans记录一次答案,最后将ans返回即可。完整的 Swift 题解:

class Solution {func longestConsecutive(_ nums: [Int]) -> Int {var st = Set<Int>(nums)var ans = 0for num in st {if !st.contains(num - 1) {var currNum = num, currLen = 0while st.contains(currNum) {currNum ++currLen ++}ans = max(ans, currLen)}}return ans}
}
http://www.dtcms.com/a/475212.html

相关文章:

  • echarts6.0.0版本,平行坐标图形,series为多组时,横线溢出绘图区域,如何解决
  • 网站授权合同如何做好网站的建设与维护
  • 杭州市萧山区建设局网站江苏建设厅网站首页
  • 树莓派基础以及YOLOv8模型的应用
  • ueditor for wordpress太原百度seo排名软件
  • 网站左边logo图标怎么做网站开发需求分析怎么写
  • llm模型训练防遗忘与同义词训练理解
  • 晒豆网站建设新泰网页设计
  • ssh 密钥怎么配置不同网站用不同密钥,对应不同Git仓库以及帐号
  • 网站建设网站设计哪家专业企业管理系统的构成
  • Razor VB 逻辑:深入理解与最佳实践
  • 怎样做易支付网站网页组件
  • 绥化网站建设兼职python 创建wordpress
  • 陕西交通建设集团蓝商公司网站seo咨询
  • 带偏置的三级运放仪表放大电路与仿真
  • 深度学习优化算法深入分析:从 SGD 到 LAMB
  • 建外贸营销型网站WordPress的light
  • 案例较少如何做设计公司网站视频网站开发费用
  • Shiro
  • 【2025PC端多模态大模型部署推荐】
  • [数据集][xlsx]电力变压器油色谱数据集介绍
  • 基于LoRa的果园智能灌溉无线控制系统的设计(论文+源码)
  • 网站自助服务建设策划佛山电脑培训班哪里有
  • 网站的统计代码是什么意思交互设计要学什么
  • 视频网站怎么做服务器网页代码怎么写
  • 站点可用性监测实验
  • 教育一对一直播网站建设有做火币网这种网站的吗
  • JVM字节码与类的加载(二):类加载器
  • 两轮自平衡车原理详解与代码实现
  • 手机网站开源系统wordpress 商务主题