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

Day02【哔哩哔哩2023校园招聘后端开发方向笔试卷B】螺旋输出矩阵

在这里插入图片描述
个人感觉这道题主要就是对于数组越界和循环的考察,在第一次编辑时,考虑数组是否会有越界问题,因为写的do–while–循环,会导致多一次

#include <iostream>
#include <vector>class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** @param matrix int整型vector<vector<>>* @return int整型vector*/vector<int> SpiralMatrix(vector<vector<int> >& matrix) {// write code hereint i = 0, j = 0;int top = 0, left = 0;int bottom = matrix.size()-1;int right = matrix[0].size()-1;vector<int> newMatrix;do {for (int j = left ; j <= right ; j++ ) {newMatrix.push_back(matrix[top][j]);}top++;// right--;for (i = top ; i <= bottom ; i++) {newMatrix.push_back(matrix[i][right]);}right--;// bottom--;for (j = right; j >= left ; j--) {newMatrix.push_back(matrix[bottom][j]);}bottom--;for (i = bottom ; i >= top; i--) {newMatrix.push_back(matrix[i][left]);}left++;} while (top <= bottom && left <= right);//newMatrix.push_back(matrix[top][right]);// for (i =0; i <newMatrix.size(); i++) {//     cout<< newMatrix[i] <<endl;// }return newMatrix;}
};

需要边界检查
可以依然用do–while语句,但是需要判断

#include <iostream>
#include <vector>class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** @param matrix int整型vector<vector<>>* @return int整型vector*/vector<int> SpiralMatrix(vector<vector<int> >& matrix) {// write code hereint i = 0, j = 0;int top = 0, left = 0;int bottom = matrix.size()-1;int right = matrix[0].size()-1;vector<int> newMatrix;do {//上边界for (int j = left ; j <= right ; j++ ) {newMatrix.push_back(matrix[top][j]);}top++;// right;if(top <= bottom){for (i = top ; i <= bottom ; i++) {newMatrix.push_back(matrix[i][right]);}right--;}// bottom;if(top <= bottom){for (j = right; j >= left ; j--) {newMatrix.push_back(matrix[bottom][j]);}bottom--;}//leftif(left <= right){for (i = bottom ; i >= top; i--) {newMatrix.push_back(matrix[i][left]);}left++;}} while (top <= bottom && left <= right);//newMatrix.push_back(matrix[top][right]);// for (i =0; i <newMatrix.size(); i++) {//     cout<< newMatrix[i] <<endl;// }return newMatrix;}
};
http://www.dtcms.com/a/391437.html

相关文章:

  • 硬件开发_基于STM32单片机的家养绿植生长健康管理系统
  • 安装Node.js与NPM包管理器
  • 【数据结构】深入浅出图论:拓扑排序算法全面解析与应用实践
  • 全矩阵布局+硬核技术,中资机器人管家重塑智能服务新格局
  • Linux进程间通信(IPC)完全指南:从管道到共享内存的系统性学习
  • vllm安装使用及问题
  • redis配置与优化(2)
  • 苹果开发者账号( Apple Developer)登录出现:你的 Apple ID 暂时不符合使用此应用程序的条件(您的apple账户不符合资格)
  • Git常用命令和分支管理
  • AI报告撰写实战指南:从提示词工程到全流程优化的底层逻辑与实践突破
  • 主流数据库压测工具全解析(从工具选型到实战压测步骤)
  • Vue的理解与应用
  • TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践
  • 苹果群控系统的资源调度
  • Qt如何实现自定义标题栏
  • Qt QPlugin界面插件式开发Q_DECLARE_INTERFACE、Q_PLUGIN_METADATA和Q_INTERFACES
  • 梯度增强算法(Gradient Boosting)学习笔记
  • 确保邵氏硬度计测量精度问题要考虑事宜
  • `scroll-margin-top`控制当页面滚动到某个元素滚时,它在视口预留的位置,上方留白
  • 内存管理-伙伴系统合并块计算,__find_buddy_pfn,谁是我的伙伴???
  • 【LVS入门宝典】LVS核心原理与实战:Director(负载均衡器)配置指南
  • 算法常考题:描述假设检验的过程
  • IEEE会议征集分论坛|2025年算法、软件与网络安全国际学术会议(ASNS2025)
  • 洞见未来:计算机视觉的发展、机遇与挑战
  • MongoDB集合学习笔记
  • C++ 中 std::list使用详解和实战示例
  • IO流的简单介绍
  • 【AI论文】SAIL-VL2技术报告
  • 基于 SSM(Spring+SpingMVC+Mybatis)+MySQL 实现(Web)软件测试用例在线评判系统
  • 【2/20】理解 JavaScript 框架的作用:Vue 在用户界面中的应用,实现一个动态表单应用