golang顺时针打印矩阵的方法示例

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.

package main

import "fmt"

func main() {
  //s := [][]int{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}
  //s := [][]int{{1}, {2}, {3}, {4}}
  //s := [][]int{{1, 2, 3, 4}, {5, 6, 7, 8}}
  s := [][]int{{1, 2}, {5, 6}, {9, 10}, {13, 14}}

  printMatrix(s)
}
func printMatrix(s [][]int) {
  if s == nil {
    fmt.Println("切片为空,无法打印")
  }
  bex, bey := 0, 0
  hang := len(s) - 1
  lie := len(s[0]) - 1
  if hang == 0 {
    for _, v := range s[0] {
      fmt.Println(v)
    }
    return
  }
  if lie == 0 {
    for _, v := range s {
      fmt.Println(v[0])
    }
    return
  }
  for bex <= hang && bey <= lie {
    ax, ay := bex, bey
    for ay < lie {
      fmt.Println(s[ax][ay])
      ay++
    }
    for ax < hang {
      fmt.Println(s[ax][ay])
      ax++
    }
    for ay > bey {
      fmt.Println(s[ax][ay])
      ay--
    }
    for ax > bex {
      fmt.Println(s[ax][ay])
      ax--
    }
    bex++
    bey++
    hang--
    lie--
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • golang顺时针打印矩阵的方法示例

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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. package main import "fmt" func main() { //s := [][]int{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13,

  • PHP实现顺时针打印矩阵(螺旋矩阵)的方法示例

    本文实例讲述了PHP实现顺时针打印矩阵的方法.分享给大家供大家参考,具体如下: 问题 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. 解决方法 就是一圈一圈地打印,只要控制好循环就可以. 注意单行单列的情况. 实现代码 <?php function printMatrix($matri

  • java编程题之顺时针打印矩阵

    本文实例为大家分享了java顺时针打印矩阵的具体代码,供大家参考,具体内容如下 github:剑指offer编程题 import java.util.ArrayList; /** * * 剑指offer编程题(JAVA实现)--第19题:顺时针打印矩阵 * * 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如, 如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,1

  • java实现顺时针打印矩阵

    本文实例为大家分享了java实现顺时针打印矩阵的具体代码,供大家参考,具体内容如下 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. 1     2    3    4 5     6    7    8 9    10  11  12 13  14  15  16 方法一: 介

  • TypeScript顺时针打印矩阵实现实例详解

    目录 前言 梳理思路 实现代码 示例代码 前言 有一个矩阵,如何按照从外向里以顺时针的顺序依次打印出每一个元素?本文将跟大家分享下这个算法,欢迎各位感兴趣的开发者阅读本文. 梳理思路 当我们遇到一个复杂的问题时,可以通过举例将它画出来,这样就可以更直观的发现规律.那么我们就先构造一个矩阵出来,如下所示: const matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ]; 顺时针访问一个矩阵,那么它的访

  • python实现顺时针打印矩阵

    面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:每次打印并删除矩阵的第一行,然后将矩阵逆时针翻转90度,直至打印出全部结果 具体代码实现如下: # coding:utf-8 class Solution(object): def printMatrix(self, matrix):

  • python 顺时针打印矩阵的超简洁代码

    如下所示: # -*- coding:utf-8 -*- class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here res=[] n=len(matrix) m=len(matrix[0]) if m==1 and n==1: res=[matrix[0][0]] return res else: for o in range((min(m,n)+1)//2): [res.app

  • Java顺时针打印矩阵

    本文实例为大家分享了Java顺时针打印矩阵的具体代码,供大家参考,具体内容如下 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 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. 思路: 首先拿到这个题,读完题我们脑子里会呈现出这样的一个画面.从外

  • Python中shape计算矩阵的方法示例

    本文实例讲述了Python中shape计算矩阵的方法.分享给大家供大家参考,具体如下: 看到机器学习算法时,注意到了shape计算矩阵的方法接下来就讲讲我的理解吧 >>> from numpy import * >>> import operator >>> a =mat([[1,2,3],[5,6,9]]) >>> a matrix([[1, 2, 3], [5, 6, 9]]) >>> shape(a) (2,

  • Golang优雅关闭channel的方法示例

    前言 最近使用go开发后端服务,服务关闭需要保证channel中的数据都被读取完,理由很简单,在收到系统的中断信号后,系统需要做收尾工作,保证channel的数据都要被处理掉,然后才可以关闭系统.但实现起来没那么简单,下面来一起看看详细的介绍吧. 关于Go channel设计和规范的批评: 在不能更改channel状态的情况下,没有简单普遍的方式来检查channel是否已经关闭了 关闭已经关闭的channel会导致panic,所以在closer(关闭者)不知道channel是否已经关闭的情况下去

随机推荐