原文链接:【LeetCode学习计划】《数据结构入门-C++》第4天 数组_Wang_Xin_Ling的博客-CSDN博客
目录
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;
}
};