[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排序陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- 【LeetCode】189. 旋轉陣列LeetCode陣列
- LeetCode-189-旋轉陣列LeetCode陣列
- LC 189. 旋轉陣列陣列
- 旋轉陣列中的最小元素陣列
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode每日一題: 旋轉陣列(No.189)LeetCode每日一題陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- [轉]旋轉矩陣:點旋轉和座標系旋轉矩陣
- 劍指offer:旋轉陣列的最小數字陣列
- 每日一道演算法:旋轉陣列演算法陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 力扣·33. 搜尋旋轉排序陣列力扣排序陣列
- 圖解:什麼是旋轉陣列(Rotate Array)?圖解陣列
- leetcode, LC68:旋轉排序陣列搜尋LeetCode排序陣列
- 逗號分隔,輸出陣列陣列
- LeetCode 熱題 HOT 100 Java題解——33. 搜尋旋轉排序陣列LeetCodeJava排序陣列
- 力扣-81. 搜尋旋轉排序陣列 II力扣排序陣列
- 【Java】int[] 陣列 和 Integer陣列的轉換Java陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- Java中List陣列互轉Java陣列
- 153. 尋找旋轉排序陣列中的最小值排序陣列
- 我請大家來刷題:旋轉陣列的最小數字陣列
- iOS 字典轉陣列,陣列轉字典iOS陣列
- 三維座標系旋轉——旋轉矩陣到旋轉角之間的換算矩陣
- Java 中陣列轉換為 ListJava陣列
- Java 集合與陣列互相轉換Java陣列
- Java陣列轉列表方式對比Java陣列
- Java中List與陣列互轉Java陣列
- Java 二維陣列轉一維Java陣列
- 【MATLAB】利用size()函式輸出陣列大小Matlab函式陣列