美文网首页
54. 螺旋矩阵

54. 螺旋矩阵

作者: 邦_ | 来源:发表于2022-07-22 11:15 被阅读0次

    自己想的= =。。 因为swift的区间问题吧= =。。每次进行下一步都做了下判断。。感觉挺扯的

    
    
    func spiralOrder(_ matrix: [[Int]]) -> [Int] {
    
            var ans = [Int]()
            let row = matrix.count
            let col = matrix.first?.count ?? 0
            var left = 0, right = col ,top = 0 ,bottom = row
            
            while true {
                
               if left >= right {
                   break
               }
                //从左到右
                for i in left..<right {
                    ans.append(matrix[top][i])
                }
                // print(ans)
                right -= 1
                top += 1
                if top >= bottom {
                    break
                }
                //从上到下
                for i in top..<bottom {
                    ans.append(matrix[i][right])
                }
                bottom -= 1
                // print(ans)
                
                if left >= right {
                    break
                }
                //从右到左
                for i in (left..<right).reversed() {
                    ans.append(matrix[bottom][i])
                }
                // print(ans)
               
               if top >= bottom {
                   break
               }
                //从下往上
                for i in (top..<bottom).reversed() {
                    ans.append(matrix[i][left])
                }
                // print(ans)
                left += 1
                   
            }
            return ans
        
        }
    
    

    优化版本

    func spiralOrder(_ matrix: [[Int]]) -> [Int] {
    
            var ans = [Int]()
            var left = 0, right = matrix.first?.count ?? 0 ,top = 0 ,bottom = matrix.count
            
            while true {
    
                //从左到右
                for i in left..<right {
                    ans.append(matrix[top][i])
                }
                // print(ans)
                right -= 1
                top += 1
                if top >= bottom {
                    break
                }
                //从上到下
                for i in top..<bottom {
                    ans.append(matrix[i][right])
                }
                bottom -= 1
                // print(ans)
                
                if left >= right {
                    break
                }
                //从右到左
                for i in (left..<right).reversed() {
                    ans.append(matrix[bottom][i])
                }
                // print(ans)
               
               if top >= bottom {
                   break
               }
                //从下往上
                for i in (top..<bottom).reversed() {
                    ans.append(matrix[i][left])
                }
                // print(ans)
                left += 1
                 if left >= right {
                   break
               }
                   
            }
            return ans
        
        }
    

    相关文章

      网友评论

          本文标题:54. 螺旋矩阵

          本文链接:https://www.haomeiwen.com/subject/jjsmirtx.html