48.画像回転

件名の説明:

  N×Nの所与の二次元マトリクスの画像を表します。

  画像は、時計回りに90度回転させました。

  説明:

  あなたは直接2次元マトリックスの入力を変更する必要があることを意味しており、所定の位置に画像を回転する必要があります。画像を回転させるために、別の行列を使用しないでください。

  例1:

  所与=マトリックス
    [
      [1,2,3]、
      [4,5,6]、
      [7,8,9]
    ]、

  :それはなるように、入力行列のその場回転で
    [
      [7,4,1]、
      [8,5,2]、
      [9,6,3]
    ]
  例2:

  所与=マトリックス
    [
      [5 ,. 1 9,11]、
      [2 ,. 4、8,10]、
      [13 ,. 3 ,. 6 ,. 7]である
      [15,14,12,16]
    ]、

  :それはなるように入力行列のその場回転、
    [
      [15、13、2、5]、
      [14、3、4、1]、
      [12、6、8、9]、
      [16、7、10 ]
    ]

ソリューション:

   由于:行列[X] [Y] =行列[長-1-Y] [X]。

             行列[長-1-Y] [X] =行列[長-1-X] [長さ-1-Y]。

             行列[長-1-X] [長さ-1-Y] =行列[Y] [長さ-1-X];

             行列[Y] [長さ-1-X] =行列[X] [Y]。

  省スペース化の原則によると、図に示すように、4つの回転域を使用しました:

                          

パッケージの配列。
パブリック クラスL48 {
     公共 静的 ボイド回転(INT [] []行列){
         ためINT index_x = 0; index_x <=(matrix.length-1)/ 2; index_x ++ ){
             ためINT index_y = index_x; index_y <マトリックス.LENGTH -1 - index_x; index_y ++ ){
                 int型の TEMP = 行列[index_x] [index_y]。
                行列[index_x] [index_y] =行列[matrix.length -1- index_y] [index_x]。
                行列[matrix.length -1- index_y] [index_x] =行列[matrix.length -1- index_x] [matrix.length -1-index_y]; 
                行列[matrix.length -1- index_x] [matrix.length -1- index_y] =行列[index_y] [matrix.length -1- index_x]。
                行列[index_y] [matrix.length -1- index_x] = TEMP。
            } 
        } 
    } 
    パブリック 静的 ボイドメイン(文字列[]引数)は{
         int型 [] []行列= {{1,2,3}、{4,5,6}、{7,8,9 }}。
        (マトリックス)を回転させます。
        int型のインデックス= 0、インデックス<matrix.length;インデックス++ ){
             ためのint型デ= 0;デ<matrix.length;デ++){
                System.out.println(行列[インデックス] [デ])。
            } 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/mayang2465/p/11736169.html