LeetCode 고급 - 나선형 매트릭스
m x n 개의 요 소 를 포함 하 는 행렬 (m 줄, n 열) 을 지정 합 니 다. 시계 방향 나선형 순서에 따라 행렬 의 모든 요 소 를 되 돌려 주 십시오.
예시 1:
:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
: [1,2,3,6,9,8,7,4,5]
예시 2:
:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
: [1,2,3,4,8,12,11,10,9,5,6,7]
분석 하 다.
이 문 제 는 생각 이 매우 분명 하 다.하지만 그 중 좌표 가 바 뀌 는 것 은 징 그 러 웠 다.
나의 사고방식 은 고리 수 에 따라 옮 겨 다 니 는 것 이다. 고리 수 는 길이 와 너비 중 비교적 작은 것 에 달 려 있다. 예 를 들 어:
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
4. 567917. 환 수 는 3 / 2 = 1 (0 부터 계산 하여 좌표 변환 에 편리 함) 이다
0 라운드 의 출력 순서: [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]
이렇게 하면 사각 에서 중복 출력 을 피 할 수 있다.
코드
class Solution {
public List spiralOrder(int[][] matrix) {
List res = new ArrayList<>();
if(matrix == null || matrix.length ==0){
return res;
}
int numi = matrix.length;
int numj = matrix[0].length;
//
int loop = numi>numj?(numj+1)/2:(numi+1)/2;
for(int i=0;i2,numj-=2){
for(int col = i;colfor(int row = i+1;row1]);
}
// , ,
if(numi ==1||numj==1)
break;
for(int col = i+numj-2;col>=i;col--){
res.add(matrix[i+numi-1][col]);
}
for(int row = i+numi -2;row>i;row--){
res.add(matrix[row][i]);
}
}
return res;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.