leetcode—5/10

1.螺旋矩阵

给定一个包含m×n个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中所有元素。

思路:矩阵中有多少个圈,每一圈按顺时针方向输出
做的我想哭了,注意最后逆向判断的时候该层是否只有一行或这一列,以及min那里加!括!号!

vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> res;
        int rows = matrix.size();
        if(rows == 0)
        {
            return res;
        }
        int lines = matrix[0].size();
        int k = 0;
        for(k; k < (min(rows,lines) + 1) / 2; k++)     //计数第几圈
        {
            int i = k;
            int j = k;
            for(j; j < lines - k; j++)    //横向添加第一行的元素
            {
                res.push_back(matrix[i][j]);
            }
            j--;
            for(i = i + 1; i < rows - k; i++)  //纵向添加最后一列元素
            {   
                res.push_back(matrix[i][j]);
            }
            i--;
            for(j -= 1; j >= k && rows - 1 - k != k; j--)    //横向添加最后一行元素
            {
                res.push_back(matrix[i][j]);
            }
            j++;
            for(i -= 1; i > k && lines - k - 1 != k; i--)    //纵向添加第一列元素
            {
                res.push_back(matrix[i][j]);
            }
        }
        return res;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值