2021-04-02:给定一个正方形或者长方形矩阵matrix,实现zigzag打印。[[0,1,2
2021-04-02 23:00
846 查看
2021-04-02:给定一个正方形或者长方形矩阵matrix,实现zigzag打印。[[0,1,2],[3,4,5],[6,7,8]]的打印顺序是0,1,3,6,4,2,5,7,8。
福大大 答案2021-04-02:
两个for循环嵌套。
外层循环。先遍历第一列,再遍历不包含列号为0的最后一行。每循环一次,修改标志位。
内层循环。根据标志位判断,从左下到右上,还是从右上到左下。
代码用golang编写。代码如下:
package main import "fmt" func main() { arr := [][]int{ {0, 1, 2}, {3, 4, 5}, {6, 7, 8}} printMatrixZigZag(arr) } func printMatrixZigZag(matrix [][]int) { row := len(matrix) col := len(matrix[0]) fromUp := false //遍历第一列 for i := 0; i < row; i++ { if fromUp { //找最右上的位置 j := 0 for ; i-j >= 0 && j < col; j++ { } j-- //右上到左下 for ; j >= 0; j-- { fmt.Print(matrix[i-j][0+j], " ") } } else { //左下到右上 for j := 0; i-j >= 0 && j < col; j++ { fmt.Print(matrix[i-j][0+j], " ") } } fromUp = !fromUp } //遍历最后一行 for j := 1; j < col; j++ { if fromUp { //找最右上的位置 i := 0 for ; row-1-i >= 0 && j+i < col; i++ { } i-- //右上到左下 for ; i >= 0; i-- { fmt.Print(matrix[row-1-i][j+i], " ") } } else { //左下到右上 for i := 0; row-1-i >= 0 && j+i < col; i++ { fmt.Print(matrix[row-1-i][j+i], " ") } } fromUp = !fromUp } }
执行结果如下:
相关文章推荐
- 2021-04-02:给定一个正方形或者长方形矩阵matrix,实现zigzag打印。[[0,1,2
- 2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子。[[a,b,
- 定义一个Matrix类,实现矩阵的加法和乘法
- 用c++实现一个n*n矩阵,矩阵沿着45度递增,形成zigzag数组
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- 扣59题解:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
- Python实现螺旋矩阵:给定一个m*n要素的矩阵。按照螺旋顺序,返回该矩阵的所有要素。
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 给定一个N * N的矩阵,在这个加粗样式矩阵中只有0和1两种值,返回边框全是1的最大正方形边长(利用三维数组,c语言描述)
- 找词”游戏是在美国流行的一种游戏,它要求游戏者从一张填满字母的正方形表中,找出包含在一个给定集合中的所有词。这些词可以竖着读(向上或向下)、横着读(从左或从右),或者沿45度对角线斜着读。
- 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。
- 利用二维数组实现一个矩阵类:Matrix
- java实现输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- opencv下如何打印出一个三通道或者二通道矩阵
- JAVA函数实现任意给定一组数, 找出任意数相加等于某数或者在一个范围
- hdu 5671 Matrix(操作一个矩阵,交换行或者列,对行或者列加上一个值)
- PTA习题11-5 指定位置输出字符串 (20分)本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符
- Educational Codeforces Round 8 E. Zbazi in Zeydabad(给你一个n*m矩阵,每个点可能是'.'或者'z',问有多少种Z子型(Z为一个正方形))
- 有一个n*n的矩阵,矩阵由 "0"和"1"组成,检测矩阵中的由"1"组成的图形是一个实心的正方形,结果为true或者false
- 【算法】 输入n 输出一个n*n的zigzag矩阵 利用c++实现