題目:給定一個(gè)N*N的二維數(shù)組矾柜,將二維數(shù)組旋轉(zhuǎn)90度.
核心代碼:
func rotate(data:inout [[Int]],n:Int) {
for layer in 0..<n / 2 {
let first:Int = layer
let last:Int = n - 1 - first
for i in first..<last {
let offset:Int = i - first
let top:Int = data[first][i] // top 數(shù)值
data[first][i] = data[last - offset][first] // 從左到上
data[last - offset][first] = data[last][last - offset] // 從下到左
data[last][last - offset] = data[i][last] // 從右到下
data[i][last] = top // 從上到右
}
}
}
測試代碼:
var rotateData:[[Int]] = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
myString.rotate(data: &rotateData, n: 4)
print("FlyElephant--數(shù)組旋轉(zhuǎn)90度數(shù)據(jù)---\(rotateData)")