首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何按一定的顺序打印出二维数组?

按一定的顺序打印出二维数组可以使用螺旋矩阵的方法。具体步骤如下:

  1. 定义四个变量:top、bottom、left、right,分别表示当前打印范围的上边界、下边界、左边界和右边界。
  2. 初始化这四个变量:top = 0,bottom = 行数 - 1,left = 0,right = 列数 - 1。
  3. 使用一个循环,不断打印当前范围内的元素,直到打印完所有元素。
  4. 在循环中,按照顺时针的方向依次打印上边界、右边界、下边界和左边界的元素。
    • 打印上边界:从左到右打印第top行的元素,打印完后将top加1。
    • 打印右边界:从上到下打印第right列的元素,打印完后将right减1。
    • 打印下边界:从右到左打印第bottom行的元素,打印完后将bottom减1。
    • 打印左边界:从下到上打印第left列的元素,打印完后将left加1。
  • 循环结束后,所有元素都被打印出来。

以下是一个示例代码:

代码语言:txt
复制
def printMatrix(matrix):
    if not matrix:
        return []
    
    rows = len(matrix)
    cols = len(matrix[0])
    top, bottom, left, right = 0, rows - 1, 0, cols - 1
    result = []
    
    while top <= bottom and left <= right:
        # 打印上边界
        for i in range(left, right + 1):
            result.append(matrix[top][i])
        top += 1
        
        # 打印右边界
        for i in range(top, bottom + 1):
            result.append(matrix[i][right])
        right -= 1
        
        # 打印下边界
        if top <= bottom:
            for i in range(right, left - 1, -1):
                result.append(matrix[bottom][i])
            bottom -= 1
        
        # 打印左边界
        if left <= right:
            for i in range(bottom, top - 1, -1):
                result.append(matrix[i][left])
            left += 1
    
    return result

这个算法的时间复杂度是O(m*n),其中m和n分别是二维数组的行数和列数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券