566. Reshape the Matrix(2017/11/3)

這是一道關於二維向量的題目。

提示: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;
        }
    }
};




發佈了32 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章