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
Java实现 LeetCode_0048_RotateImage
2023-09-14 08:58:08 时间
相关文章
- Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)
- Java实现 LeetCode 815 公交路线(创建关系+BFS)
- Java实现 LeetCode 788 旋转数字(暴力)
- Java实现 LeetCode 764 最大加号标志(暴力递推)
- Java实现 LeetCode 715 Range 模块(选范围)
- Java实现 LeetCode 654 最大二叉树(递归)
- Java实现 LeetCode 529 扫雷游戏(DFS)
- Java实现 LeetCode 482 密钥格式化
- Java实现 LeetCode 453 最小移动次数使数组元素相等
- Java实现 LeetCode 414 第三大的数
- Java实现 LeetCode 405 数字转换为十六进制数
- Java实现 LeetCode 5355 T 秒后青蛙的位置
- Java实现 LeetCode 343 整数拆分(动态规划入门经典)
- Java实现 LeetCode 312 戳气球
- Java实现 LeetCode 318 最大单词长度乘积
- Java实现 LeetCode 295 数据流的中位数
- Java实现 LeetCode 232 用栈实现队列
- Java实现 LeetCode 232 用栈实现队列
- Java实现 LeetCode 127 单词接龙
- Java实现 LeetCode 108 将有序数组转换为二叉搜索树
- Java实现 LeetCode 91 解码方法
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
- Java实现 LeetCode 47 全排列 II(二)
- Java实现 LeetCode 30 串联所有单词的子串
- Java实现LeetCode_0001_Two Sum
- Java实现LeetCode_0035_SearchInsertPosition
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener