【打卡】【LeetCode学习计划】《数据结构入门-C++》第4天 数组

原文链接:【LeetCode学习计划】《数据结构入门-C++》第4天 数组_Wang_Xin_Ling的博客-CSDN博客

目录

566. 重塑矩阵LeetCode: 566. 重塑矩阵

方法;一维数组

118. 杨辉三角LeetCode: 118. 杨辉三角

 方法:定义法


566. 重塑矩阵
LeetCode: 566. 重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

方法;一维数组

 

 

class Solution {
public:
    vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
        const int m = mat.size(), n = mat[0].size();
        const int size = m*n;
        if (size != r*c)
        {
            return mat;
        }

        vector<vector<int>> ans(r,vector<int>(c));
        for (int i = 0;i <size ;i++)
        {
            ans[i/c][i%c] = mat[i/n][i%n];
        }
        return ans;
    }
};

 

118. 杨辉三角
LeetCode: 118. 杨辉三角

题目:

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。

 

 方法:定义法

就是简单得数学方法解决

 

class Solution {
public:
    vector<vector<int>> generate(int numRows)
     {
        vector<vector<int>> ans;
        ans.reserve(numRows);

        for (int i = 0 ;i < numRows ;i++)
        {
            vector<int> row(i+1);
            row[0] = row[i] = 1;
            if (i >= 2)
            {
                for (int j = 1;j < i; j++)
                {
                    row[j] = ans[i-1][j-1] + ans[i-1][j];
                }
            }
            ans.emplace_back(row);
        }
        return ans;
    }
};


 

おすすめ

転載: blog.csdn.net/qq_62932195/article/details/121870339