zoukankan      html  css  js  c++  java
  • JZ19 顺时针打印矩阵

    顺时针打印矩阵

    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
     
    思路:第一个循环判断是否还能打印一圈,开始点坐标(start,start),然后打印一圈;
    打印第一行:无需判断;
    打印最后一列:结束行大于开始行;
    打印最后一行:结束行大于开始行,结束列大于开始列;
    打印第一列:结束行大于(开始行+1),结束列大于开始列。
     
    (start,start) (start,endCol)
    (endRow,start) (endRow,endCol)
     
    注意细节:打印函数里面不要计算列数和行数,需要得到的是最后的下标,还有就是圈数循环继续的条件是列数大于start*2,行数大于start*2;
     
    func helper(matrix *[][]int, result *[]int, start, row, col int) {
        curRow := row - start - 1
        curCol := col - start - 1
        
        // 打印第一行
        for i := start; i <= curCol; i++ {
            *result = append(*result, (*matrix)[start][i])
        }
        
        // 打印最后一列
        if curRow > start {
            for i := start + 1; i <= curRow; i++ {
                *result = append(*result, (*matrix)[i][curCol])
            }
        }
        
        // 打印最后一行
        if curRow > start && curCol > start {
            for i := curCol - 1; i >= start; i-- {
                *result = append(*result, (*matrix)[curRow][i])
            }
        }
        
        //打印第一列
        if curRow > start + 1 && curCol > start {
            for i := curRow - 1; i > start; i-- {
                *result = append(*result, (*matrix)[i][start])
            }
        }
    }
    
    func printMatrix( matrix [][]int ) []int {
        // write code here
        if len(matrix) == 0 {
            return []int{}
        }
        if len(matrix[0]) == 0 {
            return []int{}
        }
        var result []int
        start := 0 
        row := len(matrix)
        col := len(matrix[0])
        for row > 2 * start && col > 2 * start {
            helper(&matrix, &result, start, row, col)
            start++
        }
        return result
    }
  • 相关阅读:
    9、二叉排序树的创建、插入、遍历
    8、判断两个链表是否相交
    7、判断链表是否有环
    6、查找单链表中倒数第n个节点
    5、单链表的反转
    4、KMP(看毛片)算法
    3、希尔排序
    2、快速排序
    json字符串转为json对象
    json对象转化为字符串过程分析
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14634907.html
Copyright © 2011-2022 走看看