zoukankan      html  css  js  c++  java
  • Java实现 LeetCode_0048_RotateImage

    package javaLeetCode.medium;
    
    public class RotateImage_48 {
    
    	public static void main(String[] args) {
    		int[][] matrix = { {5, 1, 9,11}, { 2, 4, 8,10}, {13, 3, 6, 7},{15,14,12,16} };
    		rotate_2(matrix);
    	}// end main()
    
    	/**
    	 * Conventional idea.<br>
    	 * 1. It's rotating diagonally<br>
    	 * 2. 2. Rotating column.<br>
    	 * 3. Print the array of matrix.<br>
    	 * */
    	/*
    	 * Test Data: Example 1: Given input matrix = { {1,2,3}, {4,5,6}, {7,8,9} },
    	 * rotate the input matrix in-place such that it becomes: { {7,4,1},{8,5,2},{9,6,3} }
    	 * 
    	 * Example 2:
    	 * Given input matrix = { {5, 1, 9,11}, { 2, 4, 8,10}, {13, 3, 6, 7},{15,14,12,16} },
    	 * rotate the input matrix in-place such that it becomes: { {15,13, 2, 5}, {14,3, 4, 1}, {12, 6, 8, 9}, {16, 7,10,11} }
    	 */
    	public static void rotate_1(int[][] matrix) {
    		if(matrix==null) {
    			return;
    		}//end for
    //=====================================================
    		// 1. It's rotating diagonally
    		for (int i = 0; i < matrix.length; i++) {
    			for (int j = 0; j < matrix[i].length; j++) {
    				if (i < j) {
    					matrix[i][j] = matrix[i][j] ^ matrix[j][i];
    					matrix[j][i] = matrix[i][j] ^ matrix[j][i];
    					matrix[i][j] = matrix[i][j] ^ matrix[j][i];
    				} else {
    					continue;
    				} // end if
    			} // end for
    		} // end for
    		
    		//2. Rotating column.
    		for(int i=0;i<matrix.length;i++) {
    			int length = matrix[i].length;
    			for(int j=0;j<length/2;j++) {
    				matrix[i][j] = matrix[i][j] ^  matrix[i][length-j-1] ;
    				matrix[i][length-j-1] = matrix[i][j] ^  matrix[i][length-j-1] ;
    				matrix[i][j] = matrix[i][j] ^  matrix[i][length-j-1] ;
    			}//end for
    		}//end for
    //=====================================================
    		//3. Print the array of matrix.
    		for (int x[] : matrix) {
    			for (int y : x) {
    				System.out.print(y + " ");
    			} // end for
    			System.out.println();
    		} // end for
    	}// end rotate()
    	
    	/**
    	 * 
    	 * */
    	public static void rotate_2(int[][] matrix) {
    		if(matrix==null) {
    			return;
    		}//end for
    //=====================================================
    		int n = matrix.length;
            for (int i = 0; i < n / 2; ++i) {
                for (int j = i; j < n - 1 - i; ++j) {
                    int tmp = matrix[i][j];
                    matrix[i][j] = matrix[n - 1 - j][i];
                    matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
                    matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
                    matrix[j][n - 1 - i] = tmp;
                }//end for
            }//end for
    
    //=====================================================
    		//Print the array of matrix.
    		for (int x[] : matrix) {
    			for (int y : x) {
    				System.out.print(y + " ");
    			} // end for
    			System.out.println();
    		} // end for
    	}// end rotate()
    }// end RotateImage_48
    
    
    
  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076629.html
Copyright © 2011-2022 走看看