A different approach in C++


#1
>vector<vector<int>> diagonal(vector<vector<int> > &A) {
>    vector<vector<int>> res;
>    vector<int> subres;
>    auto size = A.size();
> 
>    for(auto i = 0; i<size; ++i)
>    {
>       int k = i;
>       for(auto j=0 ; j<=i;)
>          subres.push_back(A[j++][k--]);
>       res.push_back(subres);
>       subres.clear();
>    }
>    for(auto i=1 ; i<=size-1; ++i)
>    {
>       int k = size-1;
>       for(auto j=i; j<=size-1;)
>          subres.push_back(A[j++][k--]);
>       res.push_back(subres);
>       subres.clear();
>    }
>    return res;
> }

#2

I almost did the same thing but getting a TLE. Can you help why?
// int n = A.size();
// vector<vector > vec(2*n - 1);

// vec[0].push_back(A[0][0]);

// for(int j = 1; j<n ; j++){
// int temp = j;
// for(int i = 0; i<=j; i++){
// vec[j].push_back(A[i][temp]);
// i++;
// temp–;
// }
//
// }

// int j = n - 1;
// int loop = n;
// int i = 1;
// while(loop <= 2*n - 2){
// int temp = j;
// for(int tempi = i; tempi<=temp; tempi++){
// vec[loop].push_back(A[tempi][temp]);
// tempi++;
// temp–;
// }
//
// i++;
// }

// return vec;