算法-顺时针打印矩阵详解编程语言
2023-06-13 09:20:44 时间
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
[解析]
技巧:
一个矩阵可以使用对角线的两个点来唯一表示
注意:
只剩下一行或只剩下一列的特殊情况
#include iostream
#include algorithm
#include vector
using namespace std;
class Solution{
public:
vector int printMatrix(vector vector int matrix){
if(matrix.empty())
return vector int
vector int ans;
int si = 0, sj = 0;
int ei = matrix.size()-1;
int ej = matrix[0].size()-1;
while(si =ei sj =ej){
// print a cycle
// the first row
for(int j=sj; j j++)
ans.push_back(matrix[si][j]);
// the rightmost column
for(int i=si+1; i i++)
ans.push_back(matrix[i][ej]);
// the last row if have
if(si ei){
for(int j=ej-1; j j--)
ans.push_back(matrix[ei][j]);
}
// the leftmost column if have
if(sj ej){
for(int i=ei-1; i i--)
ans.push_back(matrix[i][sj]);
}
si++;
sj++;
ei--;
ej--;
}
return ans;
}
int main()
return 0;
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15275.html
cgo相关文章
- 数据结构面试常见问题总结怎么写_前端数据结构与算法面试题
- 使用python实现快速幂算法
- 经典排序算法:冒泡排序(Bubble Sort)详解编程语言
- python通过BF算法实现关键词匹配详解编程语言
- python实现高效率的排列组合算法详解编程语言
- 一种求离散数学传递闭包的算法java实现详解编程语言
- Java排序算法 – 基数排序详解编程语言
- 权重随机算法Java实现详解编程语言
- Java学习笔记之十一Java中常用的8大排序算法详解总结编程语言
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序详解编程语言
- 算法-链表中环的入口结点详解编程语言
- 算法-平衡二叉树详解编程语言
- 算法-连续子数组的最大和详解编程语言
- 算法-数组中出现次数超过一半的数字详解编程语言
- 算法-替换空格详解编程语言
- 算法-复杂链表的复制详解编程语言
- 算法-包含min函数的栈详解编程语言
- 算法-斐波那契数列的三种算法以及复杂度详解编程语言
- java 数据结构与算法—链表详解编程语言
- javascript中两种基本常用排序算法分析详解编程语言
- 二叉搜索树与双向链表算法详解编程语言
- 设计跳表算法详解编程语言
- 全排列 51 n皇后问题算法详解编程语言
- 对称的二叉树算法详解编程语言
- 算法练习之将有序数组转换为二叉搜索树,平衡二叉树详解编程语言
- 算法练习之合并两个有序链表, 删除排序数组中的重复项,移除元素,实现strStr(),搜索插入位置,无重复字符的最长子串详解编程语言
- 算法练习之两数之和详解编程语言
- 最小生成树,Prim算法实现详解编程语言