LeetCode Daily 3


2022-1-1  T2022

  

  2022的第一题??

题目描述:

给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和  n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。

original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (都 包含 )的元素构成二维数组的第二行,依此类推。

请你根据上述过程返回一个 m x n 的二维数组。如果无法构成这样的二维数组,请你返回一个空的二维数组。

示例:

输入:original = [1,2,3,4], m = 2, n = 2
输出:[[1,2],[3,4]]
解释:构造出的二维数组应该包含 22 列。
   original 中第一个 n=2 的部分为 [1,2] ,构成二维数组的第一行。
   original 中第二个 n=2 的部分为 [3,4] ,构成二维数组的第二行。

思路:

正常找规律,i * n + j 的推导注意返回空值为{}!

代码:

class Solution {
public:
    vectorint>> construct2DArray(vector<int>& original, int m, int n) {
        vectorint>> ans(m);
        for(int i = 0; i < m; i++) {
            ans[i].resize(n);
        }
        if(original.size() != m * n) return {};
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                ans[i][j] = original[i * n + j];
            }
        }
        return ans;
    }
};