題目:將一個含有N個元素的數(shù)組循環(huán)右移K位锭碳,要求時間復(fù)雜度為O(N).數(shù)組abcd向右移動一位是dabc.
核心代碼:
<pre><code>` func reverseArr(arr:inout [String],k:Int) {
if arr.count == 0 {
return
}
let count:Int = arr.count
let k:Int = k % count
reverse(arr: &arr, begin: 0, end: count - k - 1)
reverse(arr: &arr, begin: k, end: count - 1)
reverse(arr: &arr, begin: 0, end: count - 1)
}
private func reverse(arr:inout [String],begin:Int,end:Int) {
var low:Int = begin
var high:Int = end
while low < high {
swap(&arr[low], &arr[high])
low += 1
high -= 1
}
}
</code></pre> 測試數(shù)據(jù): <pre><code>
var reverseData:[String] = ["a","b","c","d","1","2","3","4"]
calculator.reverseArr(arr: &reverseData, k: 4)
print("FlyElephant-數(shù)組移位的數(shù)據(jù)---(reverseData)")`</code></pre>