当前位置: 首页 > news >正文

算法练习:19.JZ29 顺时针打印矩阵

错误原因
  • 总体思路有,但不够清晰,一直在边调试边完善。
  • 这方面就养成更好的构思习惯,以及涨涨经验吧。
分析:
思路:找规律

两个坑:

  • 一次循环的后半段是倒着遍历的
  • 是矩阵不是方阵,要考虑行列不同的情况

特殊情况:

  1. 空矩阵
  2. 行向量,列向量

#include <type_traits>
class Solution {public:vector<int> printMatrix(vector<vector<int> > matrix) {vector<int> results;// Step0.特殊情况处理:空矩阵if (matrix.size() < 1) return results;// Step1.计算左上,右上,左下的下标int k = 0;  // 左上角的下标,每次循环后+1int w_last = matrix[0].size() - 1; // 右上角的下标,每次循环后-1int h_last = matrix.size() - 1; // 左下角的下标,每次循环后-1while (k <= h_last && k <= w_last) { // 本次循环的左上角与右上角重合后 or 左上角与左下角重合后// Step1.顺序遍历上面一行for (int j = k; j <= w_last; j++)results.push_back(matrix[k][j]);// Step2.顺序遍历右边一行for (int i = k + 1; i <= h_last - 1; i++)results.push_back(matrix[i][w_last]);// Step3.逆序遍历下面一行if (k < h_last) // 跳出条件:左上角与左下角重合(针对矩阵非方阵的情况,包括行向量)for (int j = w_last; j >= k; j--)results.push_back(matrix[h_last][j]);// Step4.逆序遍历左边一行if (k < w_last) // 跳出条件:左上角与右上角重合(针对矩阵非方阵的情况,包括列向量)for (int i = h_last - 1; i >= k + 1; i--)results.push_back(matrix[i][k]);k++;w_last--;h_last--;}return results;}
};

相关文章:

  • 官方 Elasticsearch SQL NLPChina Elasticsearch SQL
  • 将嵌入映射到 Elasticsearch 字段类型:semantic_text、dense_vector、sparse_vector
  • HarmonyOS开发组件基础
  • 前端脚手架开发指南:提高开发效率的核心操作
  • 在 Kotlin 中,什么是解构,如何使用?
  • 探索嵌入式硬件的世界:技术、应用与未来趋势
  • 小结:jvm 类加载过程
  • python中列表的操作
  • VR场景制作如何完成?
  • 服务器内部可以访问外部网络,docker内部无法访问外部网络,只能docker内部访问
  • Qt功能区:Ribbon使用
  • mathematics-2024《Graph Convolutional Network for Image Restoration: A Survey》
  • OpenCV阈值处理完全指南:从基础到高级应用
  • 八股文--JUC(2)
  • 突发,苹果发布下一代 CarPlay Ultra
  • makefile细节说明
  • 图像锐化调整
  • AI最新资讯,GPT4.1加入网页端、Claude 3.7 Sonnet携“极限推理”发布在即
  • 有什么软件系统可以高效管理工地现场物资材料?
  • 【SpringBoot】从零开始全面解析SpringMVC (二)
  • 穆迪下调美国主权信用评级
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • 总奖金池百万!澎湃与七猫非虚构写作与现实题材征文大赛征稿启动
  • 美国将与阿联酋合作建立海外最大的人工智能数据中心
  • 媒体:“重病老人银行取款身亡”涉事家属称已和解,银行将支付十万