Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1000 Bytes

33.md

File metadata and controls

37 lines (27 loc) · 1000 Bytes
 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;

    }