vector<int> findDiagonalOrder(vector<vector<int>>& nums) {
int m=nums.size();
int maxSum=0,totalElements=0;
int index=0;
vector<vector<int>>map(100001);
for(int i=0;i<m;i++)
{
totalElements +=nums[i].size();
for(int j=0;j<nums[i].size();j++)
{
int sum=i+j;
map[sum].push_back(nums[i][j]); //adding element to index sum of map vector where sum =i+j
maxSum=max(maxSum,sum); //keeping the no. of vectors/diagonal formed
}
}
std::vector<int>ans(totalElements);
for(int i=0;i<=maxSum;i++)
{
vector<int>cur=map[i];
for(int j=cur.size()-1;j>=0;j--)
ans[index++]=cur[j];
}
return ans;
}