Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. class Solution {
  2. public:
  3. vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
  4. int r = mat.size();
  5. int c = mat[0].size();
  6. int cnt[100];
  7.  
  8. int dr = r - 1;
  9. int dc = 0;
  10.  
  11. int diagonals = r + c - 1;
  12.  
  13. vector<vector<int>> anis;
  14.  
  15. for(int i = 0; i < r; i++) {
  16. vector<int> vec;
  17. anis.push_back(vec);
  18. }
  19.  
  20. for(int i = 0; i < diagonals; i++) {
  21. int sr = dr;
  22. int sc = dc;
  23.  
  24. memset(cnt, 0, sizeof cnt);
  25. while(sr < r && sc < c) {
  26. cnt[mat[sr][sc]]++;
  27. sr++;
  28. sc++;
  29. }
  30.  
  31. int pushInd = dr;
  32. for(int num = 1; num <= 100; num++) {
  33. int times = cnt[num];
  34. for(int k = 0; k < times; k++) {
  35. anis[pushInd].push_back(num);
  36. pushInd++;
  37. }
  38. }
  39.  
  40. if(dr > 0) {
  41. dr--;
  42. } else {
  43. dc++;
  44. }
  45. }
  46.  
  47. return anis;
  48. }
  49. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement