package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * @param matrix int整型二维数组
 * @return int整型一维数组
 */
func printMatrix(matrix [][]int) []int {
	// write code here
	var ret []int
	if len(matrix) == 0 {
		return ret
	}

	l, r := 0, len(matrix[0])-1
	up, down := 0, len(matrix)-1
	for l <= r && up <= down {
		for i := l; i <= r; i++ {
			ret = append(ret, matrix[up][i])
		}
		up++
		if up > down {
			break
		}

		for i := up; i <= down; i++ {
			ret = append(ret, matrix[i][r])
		}
		r--
		if l > r {
			break
		}

		for i := r; i >= l; i-- {
			ret = append(ret, matrix[down][i])
		}
		down--
		if up > down {
			break
		}

		for i := down; i >= up; i-- {
			ret = append(ret, matrix[i][l])
		}
		l++
		if l > r {
			break
		}
	}

	return ret
}