zoukankan      html  css  js  c++  java
  • [LeetCode] Reshape the Matrix

    In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with different size but keep its original data.

    You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.

    The reshaped matrix need to be filled with all the elements of the original matrix in the same row-traversing order as they were.

    If the 'reshape' operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.

    Example 1:

    Input: 
    nums = 
    [[1,2],
     [3,4]]
    r = 1, c = 4
    Output: 
    [[1,2,3,4]]
    Explanation:
    The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.

    Example 2:

    Input: 
    nums = 
    [[1,2],
     [3,4]]
    r = 2, c = 4
    Output: 
    [[1,2],
     [3,4]]
    Explanation:
    There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.

    Note:

    1. The height and width of the given matrix is in range [1, 100].
    2. The given r and c are all positive.

    题意是把一个二维矩阵转换为另一个二维矩阵。首先应保证原矩阵与新矩阵元素不同则返回原矩阵,否则进行矩阵转换。遍历原矩阵中的元素,用一个数表示原二维矩阵元素的索引(k = i * n + j)。通过这个数和新矩阵的行与列计算出新矩阵元素的索引(k / c <- i, k % c <- j)。

    class Solution {
    public:
        vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
            vector<vector<int>> res(r, vector<int>(c, 0));
            int m = nums.size(), n = nums[0].size();
            if (m * n != r * c)
                return nums;
            for (int i = 0; i != m; i++) {
                for (int j = 0; j != n; j++) {
                    int k = i * n + j;
                    res[k / c][k % c] = nums[i][j];
                }
            }
            return res;
        }
    };
    // 43 ms
  • 相关阅读:
    D3使用方法
    CSS3 Media Queries
    前端软件sublime的一些常用快捷键
    如何引入外部图标集及使用方法——以bootstrap图标集为例
    如何引入外部font文字
    纯css3实现 transtion过渡效果
    svn检出项目
    关于a标签自身的click事件所带来的一些影响
    在服务器上建好的组成员如何和建好的TFS团队项目二者联系起来
    在VS上添加TFS团队项目时报错TF218027的完美解决方法
  • 原文地址:https://www.cnblogs.com/immjc/p/7141000.html
Copyright © 2011-2022 走看看