1.转圈打印矩阵
【题目】给定一个整型矩阵matrix,请按照转圈的方式打印它。例如:
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
【要求】额外空间复杂度为O(1)。
【思路】以圈为单位,获取左上角和右下角的点的坐标,依次打印,然后更新左上角和右下角的坐标,以此往复。
2.将矩阵按顺时针方向旋转90°
【要求】不要额外空间,原地旋转
【思路】分圈旋转
3.“之”字形打印矩阵
【题目】给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如:
1 2 3 4
5 6 7 8
9 10 11 12
“之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12
【要求】额外空间复杂度为O(1)。
【思路】两个指针a和b,a和b每次走一步,a向右走,到达边界后往下走,b向下走,到达边界后往右走。用一个bool值标记打印方向。
4.在行列都排好序的矩阵中找数
【题目】给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好序的。实现一个函数,判断K是否在matrix中。
例如:
0 1 2 5
2 3 4 7
4 4 4 8
5 7 7 9
如果K为7,返回true;如果K为6,返回false。
【要求】时间复杂度为O(N+M),额外空间复杂度为O(1)。
【思路】从右上角(或者左上角)开始一一进行比较,先往左,再往下走,依次淘汰行和列。
网友评论