顺时针打印矩阵 按圈打印 java
2016-10-09 16:41
225 查看
顺时针打印矩阵
热度指数:1440时间限制:3秒空间限制:32768K
本题知识点: 模拟 数组
算法知识视频讲解
对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。
给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
测试样例:
可以按圈打印,最大圈数的2倍不能超过 m和n的最小值
import java.util.*;
public class Printer {
public int[] clockwisePrint(int[][] mat, int n, int m) {
int[] ret = new int[n*m];
int k=0;
for(int s=0;s*2<m&&s*2<n;s++){
int endx = m-1-s;
int endy = n-1-s;
for(int i=s;i<=endx;++i) //左->右
ret[k++]=mat[s][i];
if(s<endy){ // 上->下
for(int i=s+1;i<=endy;++i)
ret[k++]=mat[i][endx];
}
if(s<endx&&s<endy){ //右->左
for(int i=endx-1;i>=s;--i)
ret[k++]=mat[endy][i];
}
if(s<endx&&s<endy-1){ //下->上
for(int i=endy-1;i>=s+1;--i){
ret[k++]=mat[i][s];
}
}
}
return ret;
}
}
热度指数:1440时间限制:3秒空间限制:32768K
本题知识点: 模拟 数组
算法知识视频讲解
题目描述
对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
测试样例:
[[1,2],[3,4]],2,2
返回:[1,2,4,3]
可以按圈打印,最大圈数的2倍不能超过 m和n的最小值
import java.util.*;
public class Printer {
public int[] clockwisePrint(int[][] mat, int n, int m) {
int[] ret = new int[n*m];
int k=0;
for(int s=0;s*2<m&&s*2<n;s++){
int endx = m-1-s;
int endy = n-1-s;
for(int i=s;i<=endx;++i) //左->右
ret[k++]=mat[s][i];
if(s<endy){ // 上->下
for(int i=s+1;i<=endy;++i)
ret[k++]=mat[i][endx];
}
if(s<endx&&s<endy){ //右->左
for(int i=endx-1;i>=s;--i)
ret[k++]=mat[endy][i];
}
if(s<endx&&s<endy-1){ //下->上
for(int i=endy-1;i>=s+1;--i){
ret[k++]=mat[i][s];
}
}
}
return ret;
}
}
相关文章推荐
- 矩阵------顺时针打印矩阵+顺时针旋转矩阵+之字形打印矩阵(Java)
- Java 顺时针打印矩阵
- LeetCode-54. Spiral Matrix (JAVA)(顺时针打印矩阵)
- 顺时针打印矩阵java实现
- 剑指Offer:顺时针打印矩阵(JAVA)
- java顺时针、逆时针打印矩阵
- java 顺时针打印矩阵
- 顺时针打印矩阵 (JAVA实现)
- 【剑指offer——JAVA实现】顺时针打印矩阵(含思路解答示意图)
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- 【Java笔试题】顺时针打印矩阵
- [遇见时光]剑指offer-顺时针打印矩阵java
- [算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素
- 剑指Offer面试题20(Java版):顺时针打印矩阵
- 剑指Offer:面试题20——顺时针打印矩阵(java实现)
- 剑指offer:顺时针打印矩阵(java)
- 顺时针打印矩阵 (JAVA实现)
- java顺时针、逆时针打印矩阵
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- Java 剑指offer_面试题20_顺时针打印矩阵(思路在一步步分解之中)