栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数组 从指定长度位旋转数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组 从指定长度位旋转数组

旋转数组

输入: nums = [1,2,3,4,5,6,7], k = 3 
输出: [5,6,7,1,2,3,4]

从指定的长度位,旋转数组

Swift

var newArray: [Int] = []
let array: [Int] = [10, 20, 30, 40, 50, 60]
let k: Int = 3
for i in 0..
    let j: Int = (i + k) % array.count
    print(j, array[j])
    newArray.append(array[j])
}
print(array)
print(newArray)

输出如下:

3 40
4 50
5 60
0 10
1 20
2 30
[10, 20, 30, 40, 50, 60]
[40, 50, 60, 10, 20, 30]

newArray为旋转后的数组

将array所有元素替换

var newArray: [Int] = []
var array: [Int] = [10, 20, 30, 40, 50, 60]
let k: Int = 3
for i in 0..
    let j: Int = (i + k) % array.count
    print(j, array[j])
    newArray.append(array[j])
}
array.replaceSubrange(0.. 

优化一下上面试的实现,采用一个中间数组temp

var array: [Int] = [10, 20, 30, 40, 50, 60]
let temp: [Int] = array
let k: Int = 3
for i in 0..
    let j: Int = (i + k) % array.count
    let ele = temp[j]
    print(j, ele)
    array.replaceSubrange(i.. 

函数实现如下

func rotate(_ nums: inout [Int], _ k: Int) {
    if k > 0 && k < nums.count {
        let temp = nums
        for i in 0..
            nums.replaceSubrange(i.. 

调用

var nums: [Int] = [1,2,3,4,5,6,7,8]
let k: Int = 3
rotate(&nums, k)
print(nums)

输出

[4, 5, 6, 7, 8, 1, 2, 3]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号