当前位置:   article > 正文

矩阵相关笔试

矩阵相关笔试

零矩阵

  1. class Solution {
  2. public:
  3. /* void setZeroes(vector<vector<int>>& matrix) {
  4. int m=matrix.size();
  5. int n=matrix[0].size();
  6. vector<bool> row(m, false), col(n, false);
  7. for(int i=0;i<m;i++) {
  8. for(int j=0; j<n; j++) {
  9. if(0== matrix[i][j]) {
  10. row[i]=col[j]=true;
  11. }
  12. }
  13. }
  14. for(int i=0;i<m;i++) {
  15. for(int j=0; j<n; j++) {
  16. if(row[i] || col[j] ) {
  17. matrix[i][j]=0;
  18. }
  19. }
  20. }
  21. }*/
  22. void setZeroes(vector<vector<int>>& matrix) {
  23. int m = matrix.size();
  24. int n = matrix[0].size();
  25. bool flagRow0 = false;
  26. bool flagCol0 = false;
  27. for (int i = 0; i < m; i++) {
  28. if (0 == matrix[i][0]) {
  29. flagCol0 = true;
  30. }
  31. }
  32. for (int j = 0; j < n; j++) {
  33. if (0 == matrix[0][j]) {
  34. flagRow0 = true;
  35. }
  36. }
  37. for (int i = 1; i < m; i++) {
  38. for (int j = 1; j < n; j++) {
  39. if (0 == matrix[i][j]) {
  40. matrix[i][0] = matrix[0][j] = 0;
  41. }
  42. }
  43. }
  44. for (int i = 1; i < m; i++) {
  45. for (int j = 1; j < n; j++) {
  46. if (!matrix[i][0] || !matrix[0][j]) {
  47. matrix[i][j] = 0;
  48. }
  49. }
  50. }
  51. if (flagRow0) {
  52. for (int j = 0; j < n; j++) {
  53. matrix[0][j] = 0;
  54. }
  55. }
  56. if (flagCol0) {
  57. for (int i= 0; i < m; i++) {
  58. matrix[i][0] = 0;
  59. }
  60. }
  61. }
  62. };

矩阵旋转

  1. class Solution {
  2. public:
  3. void rotate(vector<vector<int>>& matrix) {
  4. int n = matrix.size();
  5. // 水平翻转
  6. for (int i = 0; i < n / 2; ++i) {
  7. for (int j = 0; j < n; ++j) {
  8. swap(matrix[i][j], matrix[n - i - 1][j]);
  9. }
  10. }
  11. // 主对角线翻转
  12. for (int i = 0; i < n; ++i) {
  13. for (int j = 0; j < i; ++j) {
  14. swap(matrix[i][j], matrix[j][i]);
  15. }
  16. }
  17. }
  18. };
  1. void rotate(int** matrix, int matrixSize, int* matrixColSize){
  2. int revertedMatrix[matrixSize][* matrixColSize];
  3. for(int i=0; i<matrixSize; i++) {
  4. for(int j=0; j<* matrixColSize; j++) {
  5. revertedMatrix[j][matrixSize-i-1]=matrix[i][j];
  6. }
  7. }
  8. for(int i=0; i<matrixSize; i++) {
  9. for(int j=0; j<* matrixColSize; j++) {
  10. matrix[i][j]=revertedMatrix[i][j];
  11. printf(" %d ", matrix[i][j] );
  12. }
  13. printf("\n");
  14. }
  15. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/630437
推荐阅读
相关标签
  

闽ICP备14008679号