矩阵顺时针输出

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。

func arrayFromMatrix(matrix: [Array<Int>]) -> Array<Int> {
    if matrix.count == 0 {
        return []
    }else if matrix.count == 1 {
        return matrix.first!
    }else if matrix.count == 2 {
        var numbers = matrix.first!
        var second = matrix.last!
        
        for _ in second {
            numbers.append(second.removeLast())
        }
        return numbers
    }else {
        var next: [Array<Int>] = []
        var middle: [Array<Int>] = []
        var numbers = matrix
        var result = numbers.removeFirst()
        var last = numbers.removeLast()
        for var item in numbers {
            result.append(item.removeLast())
            middle.insert(item, at: 0)
            item.removeFirst()
            next.append(item)
        }
        for _ in last {
            result.append(last.removeLast())
        }
        for var item in middle {
            result.append(item.removeFirst())
        }
        result.append(contentsOf: arrayFromMatrix(matrix: next))
        return result
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容