这是一道关于二维向量的题目。
提示: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; } } };