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

【Swift】LeetCode 189. 轮转数组

189. 轮转数组

在这里插入图片描述

题目描述

请添加图片描述

思路与 Swift 题解

解决这道题目的思路其实就是首先对整个数组进行翻转,然后翻转[0, k -1][k, n - 1]这个区间上的元素。注意,k要对数组的长度先原地求余。

因此,问题简化为,在 Swift 当中,如何对一个数组进行翻转。

Swift 当中并没有提供像 C++ 那种基于迭代器的区间式翻转,库函数提供了两种方法,分别是reverse()reversed(),前者直接原地翻转,而后者返回翻转后的新数组。

看起来,Swift 的库函数并不能解决我们“按照区间”翻转的需求,但我们可以自己封装一个原地进行区间翻转的函数。我们定义一个新函数,它接受一个inout的数组,以及一个左闭右开的区间Range<Int>(完全闭区间的类型是ClosedRange<Int>,注意开区间和闭区间在 Swift 当中是不同的类型)。在这个函数当中,我们首先对区间指定的子数组进行一次翻转,之后再使用翻转后的区间替换原来数组当中相应的区间(可以使用库函数提供的replaceSubrange方法来完成原地替换)。

我们封装的函数定义为:

func reverseSubrange(_ nums: inout [Int], _ range: Range<Int>) {let reversedSubrange = Array(nums[range].reversed())	// 注意, 使用 reversed() 方法, 它将返回翻转后的数组.nums.replaceSubrange(range, with: reversedSubrange)// replaceSubrange 方法的签名就是 replaceSubrange(_:with:)
}

基于这个函数,我们可以实现我们刚才提到的思路并解决这道题,完整的 Swift 题解是:

class Solution {func reverseSubrange(_ nums: inout [Int], _ range: Range<Int>) {let reversedSubrange = Array(nums[range].reversed())nums.replaceSubrange(range, with: reversedSubrange)// replaceSubrange 方法的签名就是 replaceSubrange(_:with:)}func rotate(_ nums: inout [Int], _ k: Int) {var k = k % nums.countnums.reverse()                          // 对数组进行原地翻转reverseSubrange(&nums, 0..<k)           // 翻转前 k 个元素reverseSubrange(&nums, k..<nums.count)  // 翻转后 k 个元素}
}
http://www.dtcms.com/a/529210.html

相关文章:

  • 聊城网站托管网络舆情处置方案
  • C#的operator运算符定义
  • 南通网站建设论文网站上传用什么软件做视频格式
  • ftp备份网站wordpress进管理员密码
  • 【移动语义】C++ 移动语义的秘传心法
  • 网站营销的优势电商app系统开发公司
  • 电影wordpress福州搜索优化行业
  • 中国建设银行网站软件下载工厂招聘信息
  • 能耗在线监测系统助企业实时监测管理能耗,提升能源利用率
  • 怎么根据别人的网站做自己的网站片头制作网站
  • Python3 标准库概览
  • 从 Transformer 理论到文本分类:BERT 微调实战总结
  • 基于Python利用正则表达式将英文双引号 “ 替换为中文双引号 “”
  • rwqsd
  • 个人网站 建站前端网站优化
  • 【Linux】深入浅出 Linux 自动化构建:make 与 Makefile 的实用指南
  • 六安市城乡建设网站沧州百姓网免费发布信息网
  • 俱乐部网站php源码网站构建的工作
  • 【AI论文】机器人学习:教程
  • 普宁网站建设django做网站和js做网站
  • 物联网共享棋牌室:无人值守与24H营业下的轻量化运营实战!
  • Go Web 编程快速入门 07.3 - 模板(3):Action、函数与管道
  • 专业的培训行业网站制作北京网站建设一条龙
  • Spring Bean定义继承:配置复用的高效技巧
  • 湖北网站建设专家本地搭建linux服务器做网站
  • 龙华建网站百度账号官网
  • Python高效爬虫:使用twisted构建异步网络爬虫详解
  • 做爰片的网站公司企业网络宣传设计方案
  • 基于鸿蒙UniProton的PLC控制系统开发指南
  • 建设部网站查询造价师证件地方门户网站的前途