力扣 - 剑指 Offer 29. 顺时针打印矩阵
题目
思路1
- 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印
- 可以用一个变量
count来维护当前打印的第几层 - 判断打印结束了的条件是:
count*2<column && count*2<row - 但是要注意的是边界条件的判断,可能最里面的一层不一定要四边全部都打印出来的情况记得判断
代码
class Solution {
public int[] spiralOrder(int[][] matrix) {
if (matrix.length == 0) {
return new int[0];
}
int column = matrix[0].length;
int row = matrix.length;
//
int[] res = new int[column * row];
// 写入到res数组的指针
int position = 0;
// 代表的是第几遍循环
int count = 0;
while (count*2 < column && count*2 < row) {
int endColumn = column - 1 - count;
int endRow = row - 1 - count;
// 打印上方
// 只有这个不用判断,因为是最先打印的这个
// 如果最内圈只有一行,那么其他三个方向就都不要打印了,所以其他三个方向要判断
for (int i = count; i <= endColumn; i++) {
res[position++] = matrix[count][i];
}
// 打印右侧
if (count < endRow) {
for (int i = count+1; i <= endRow; i++) {
res[position++] = matrix[i][endColumn];
}
}
// 打印下方
if (count < endColumn && count < endRow) {
for (int i = endColumn-1; i >= count; i--) {
res[position++] = matrix[endRow][i];
}
}
// 打印左侧
if (count < endColumn && count < endRow) {
for (int i = endRow-1; i > count; i--) {
res[position++] = matrix[i][count];
}
}
count++;
}
return res;
}
}
复杂度分析
- 时间复杂度:\(O(M*N)\)
- 空间复杂度:\(O(1)\)
力扣 - 剑指 Offer 29. 顺时针打印矩阵的更多相关文章
- 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题
剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...
- 剑指 Offer 29. 顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出: ...
- 【Java】 剑指offer(29) 顺时针打印矩阵
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思 ...
- 剑指offer——29顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
- [剑指offer] 29. 顺时针打印矩阵 (for循环条件)
思路: 先定义左上和右下角点坐标,打印可分为从左到右,从上到下,从右到左,从下到上.依次判断最后一圈的四个循环条件. #include "../stdafx.h" #include ...
- 《剑指offer》顺时针打印矩阵
本题来自<剑指offer> 顺时针打印矩阵 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 1 ...
- 【剑指Offer】顺时针打印矩阵 解题报告(Python)
[剑指Offer]顺时针打印矩阵 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 剑指offer得意之作——顺时针打印矩阵
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3 ...
随机推荐
- Excel 列名转int索引(C#版)
/// <summary> /// 获取Excel实际列索引 /// </summary> /// <param name="columnName"& ...
- JDK1.8源码(六)——java.util.ArrayList类
ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Clonea ...
- Postman调试Abp API
在swagger中查看登录需要用post方式访问,Abp需要用application/json方式调用 请求体 Postman调用方式 例:访问所有用户,调用Api地址为http://localhos ...
- c# List集合类常用操作:二、增加
所有操作基于以下类 class Employees { public int Id { get; set; } public string Name { get; set; } public stri ...
- CSS002. 字体穿透蒙层(用img设置字体的color)
之前在逛Apple Store时看到了下面的UI: 交互图标非常圆滑上手也很舒服,虽然背景底色本就是白底,但是只依赖css能不能使 "+" 穿透背景看到底色 ? 大致思路如下: ...
- SpringBoot-自动配置分析-图解
- Fastjson 1.2.22-24 反序列化漏洞分析(2)
Fastjson 1.2.22-24 反序列化漏洞分析(2) 1.环境搭建 我们以ubuntu作为被攻击的服务器,本机电脑作为攻击者 本机地址:192.168.202.1 ubuntu地址:192.1 ...
- 【C++基础教程】第二课
一,上次的课后练习答案 1,输出1+2=3 2,输出2 2.25 2.25 2.25 3,第一空iostream或bits/stdc++.h 第二空main(),main(void)或main(int ...
- mysql中varchar类型和datetime类型字段进行比较
我是在mysql5.7版本进行比较 表a的字段order_no和表iwebshop_tmp的字段order_no一样 需要更新iwebshop_member_order表的datetime类型expi ...
- 手机端wap站网页播放腾讯视频代码
<div class="detail-con clear"> <div id="mod_player_wrap" class="mo ...