这是一道关于二维向量的题目。
提示:1.关于二维向量的输入:
vector
<
vector
<
int
>> test;
vector
<
int
> v;
//输入
for
(
int
i =
0
; i<n; i++) {
v.clear();
//每次记得clear:)
for
(
int
j =
0
; j < n; j++){
cin
>> temp;
v.push_back(temp);
}
test.push_back(v);
}
2.关于二维向量的大小:
test.size(); //这是行的大小 test[i].size(); //这是列的大小
3.概念(忘记是那个大神的结论):
不像二维数组那样,可以直接对
arr[i][j]进行循环赋值。在vector<vector<int>>中,因为vector是一个容器,最外层的vector容器中放着更小的vector,而里层的vector里面放的是int型的数字。所以我们首先要对里层的vector容器赋值,然后再把里层的vector作为元素插入到外层的vector中
题解:
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
vector<vector<int>> t;
int k=0,l=0;
vector<int> v;
int sum=0;
for(int i=0;i<nums.size();i++){
sum+=nums[i].size();
}
if(r*c==sum){
for(int i=0;i<r;i++){
v.clear();
for(int j=0;j<c;j++){
if(k<nums[l].size()){
v.push_back(nums[l][k]);
k++;
}else{
k=0;
l++;
v.push_back(nums[l][k]);
k++;
}
}
t.push_back(v);
}
return t;
}else{
return nums;
}
}
};