Go语言:“之”字形打印矩阵

【题目】
给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵。例如
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
打印结果是1, 2, 5, 9 , 6, 3, 4 , 7 , 10 , 11, 8, 12。要求额外空间复杂度是O(1)。

package main

import (
	"fmt"
)

func calPrintNum(arr [][]int, tR, tC, dR, dC int) {
	var lineMove bool = false
	var x int = 0
	var y int = 0

	for {
		fmt.Printf("%d ", arr[tR][tC])

		if tR == 0 && tC < dC {
			lineMove = !lineMove
			if lineMove {
				x = 0
				y = 1
			} else {
				x = 1
				y = -1
			}	
		}

		if tR == 0 && tC == dC {
			lineMove = !lineMove
			if lineMove {
				x = 1
				y = 0
			} else {
				x = 1
				y = -1
			}
		}

		if tC == 0 && tR > 0 && tR < dR {
			lineMove = !lineMove
			if lineMove {
				x = 1
				y = 0
			} else {
				x = -1
				y = 1
			}
		}

		if tC == 0 && tR == dR {
			lineMove = !lineMove
			if lineMove {
				x = 0
				y = 1
			} else {
				x = -1
				y = 1
			}
		}

		if tR == dR && tC > 0 && tC < dC {
			lineMove = !lineMove
			if lineMove {
				x = 0
				y = 1
			} else {
				x = -1
				y = 1
			}
		}

		if tC == dC && tR > 0 && tR < dR {
			lineMove = !lineMove
			if lineMove {
				x = 1
				y = 0
			} else {
				x = 1
				y = -1
			}
		}

		if tR == dR && tC == dC {
			break
		}

		tR = tR + x
		tC = tC + y
	}
}

func main() {
	matrix := [][]int {
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12},
	}

	tR := 0
	tC := 0
	dR := len(matrix) - 1
	dC := len(matrix[0]) - 1
	
	calPrintNum(matrix, tR, tC, dR, dC)
}

先实现了一版,后面再把书上的写法改写成go语言的。

看到其他人用java实现的:https://www.cnblogs.com/DarrenChan/p/8759077.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值