[JAVA]陣列旋轉輸出
- 注意元素開始輸出的位置;
- 總共有輸出多少輪:n/2+1
- 每一輪分為上、右、下、左。
- 求每一個方向起始位置與座標的關係。
import java.util.ArrayList;
import java.util.Scanner;
/*
* 旋轉輸出矩陣,從中心元素開始,矩陣n*n,n為奇數。
*/
public class rotateOrder {
public ArrayList<Integer> getORder(int[][] array,int n){
ArrayList<Integer> result=new ArrayList<Integer>();
//int startX=n/2,startY=n/2;
//int endX=n-1,endY=n-1;
int i=n/2,j=n/2;
int flag=1;
int temp=n*n;
while(true){
for(j=n/2-(flag-1);j<=n/2+flag-1;j++)//上
{
result.add(array[n/2-flag+1][j]);
temp--;
if(temp==0) break;
}
if(temp==0) break;
for(i=n/2-(flag-1);i<=n/2+flag-1;i++)//右
{
result.add(array[i][n/2+flag]);
temp--;
if(temp==0) break;
}
if(temp==0) break;
for(j=n/2+flag;j>=n/2-flag+1;j--)//下
{
result.add(array[n/2+flag][j]);
temp--;
if(temp==0) break;
}
if(temp==0) break;
for(i=n/2+flag;i>=n/2-flag+1;i--)//左
{
result.add(array[i][n/2-flag]);
temp--;
if(temp==0) break;
}
if(temp==0) break;
flag++;
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a,b;
Scanner sc=new Scanner(System.in);
//a=sc.nextInt();
//b=sc.nextInt();
//System.out.println(a+""+b);
int n=sc.nextInt();
int[][] array=new int[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
if(sc.hasNextInt())
array[i][j]=sc.nextInt();
}
ArrayList<Integer> al=new ArrayList<Integer>();
rotateOrder ar=new rotateOrder();
al=ar.getORder(array, n);
System.out.println(al.toString());
}
}
>輸入為:
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
>輸出為:
[13, 14, 19, 18, 17, 12, 7, 8, 9, 10, 15, 20, 25, 24, 23, 22, 21, 16, 11, 6, 1, 2, 3, 4, 5]
相關文章
- 【LeetCode(Java) - 33】搜尋旋轉排序陣列LeetCodeJava排序陣列
- LC 189. 旋轉陣列陣列
- 旋轉陣列中的最小元素陣列
- 將輸入陣列逆序輸出陣列
- 陣列迴圈輸出陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- Lintcode 恢復旋轉陣列陣列
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- java 陣列(轉)Java陣列
- 逗號分隔,輸出陣列陣列
- LeetCode-189-旋轉陣列LeetCode陣列
- 【LeetCode】189. 旋轉陣列LeetCode陣列
- 旋轉矩陣矩陣
- 矩陣旋轉矩陣
- 旋轉變換(一)旋轉矩陣矩陣
- Java 實現順時針螺旋二維陣列輸出Java陣列
- 每日一道演算法:旋轉陣列演算法陣列
- 劍指offer:旋轉陣列的最小數字陣列
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- 圖解:什麼是旋轉陣列(Rotate Array)?圖解陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【劍指offer】旋轉陣列的最小值陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- 二維陣列鐘擺式輸出陣列
- LeetCode每日一題: 旋轉陣列(No.189)LeetCode每日一題陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- leetcode, LC68:旋轉排序陣列搜尋LeetCode排序陣列
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 每天一題(2)--旋轉陣列求最小值陣列
- 旋轉矩陣推導矩陣
- Java中List陣列互轉Java陣列
- 三維旋轉:旋轉矩陣,尤拉角,四元數矩陣
- 我請大家來刷題:旋轉陣列的最小數字陣列