【发布时间】:2017-06-02 01:49:35
【问题描述】:
我正在尝试解决一个非常简单的 HackerRank 测试,我有一些我认为非常干净和重构的代码......但它总是在最后一个测试用例中超时。我下载了它的输入,它是一个非常大的值字符串,但其他人使用更复杂的代码也能顺利通过。如果有的话,我需要一些帮助来找到一种更简洁的方式来表示我的解决方案。
这是问题所在:https://www.hackerrank.com/challenges/ctci-array-left-rotation
对大小数组的左旋转操作将数组的每个元素单元向左移动。例如,如果对 array 执行左旋转,则 array 将变为 .
给定一个整数数组和一个数字 ,对数组执行左旋转。然后将更新后的数组打印为一行以空格分隔的整数。
输入格式
第一行包含两个以空格分隔的整数,分别表示(整数个数)和(必须执行的左旋转数)的值。 第二行包含以空格分隔的整数,描述数组初始状态的各个元素。
示例输入
5 4 1 2 3 4 5
样本输出
5 1 2 3 4
这是我的解决方案:
import Foundation
func shift(_ a: [String], n: Int, d: Int) -> String {
var s = a
for _ in 0 ..< d {
let v = s.remove(at: 0)
s.insert(v, at: n-1)
}
return s.joined(separator: " ")
}
let values = readLine()!.components(separatedBy: " ").map { Int($0)! }
let line2 = readLine()!.components(separatedBy: " ")
print(shift(line2, n: values[0], d: values[1]))
谁能帮我找到一个更干净的方法来解决这个问题?我的解决方案总是在最后两个测试用例之一上超时。
提前致谢。
【问题讨论】:
标签: ios arrays swift string sorting