使用swift,我正在解决以下问题...
“给出了由N个整数组成的零索引数组A.数组的旋转意味着每个元素向右移动一个索引,并且数组的最后一个元素移动到第一个位置。例如,数组A = [3,8,9,7,6]的旋转是[6,3,8,9,7](元素向右移动一个索引,6移动到第一个位置)。目标是旋转数组AK次;也就是说,A的每个元素将向右移动K次。“
我正在使用两种稍微不同的方法来解决上述问题,并且有点混淆哪一种更好的性能和复杂性(不需要考虑代码行数)..
#Solution1:
import UIKit
public func solution(_ A : inout [Int], _ K : Int) -> [Int] {
if (K < 0 || K > 100 || A.count == 0) {
return [];
}
if (A.count == 1) {
return A;
}
for _ in 0...(K - 1) {
let lastIndex = A.removeLast()
A.insert(lastIndex, at: 0)
}
return A
}
var tem = [1,2,3,4,5]
solution(&tem, 2)
print(tem)
#Solution2:
public func solution2(_ A : inout [Int], _ K : Int) -> [Int] {
var ret: [Int] = [];
if (K < 0 || K > 100 || A.count == 0) {
return ret;
}
if (A.count == 1) {
return A;
}
ret = A
for i in 0...(K - 1) {
ret[(i + K) % A.count] = A[i];
}
return ret
}
var tem2 = [1,2,3,4,5]
solution2(&tem2, 2)
print(tem)
请帮我确定上述两种解决方案中哪一种更好,性能更好以及为什么......提前致谢。