LeetCode 48. Rotate Image(java)
2018-01-21 13:48
381 查看
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
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] ]
思路:step1: 先将矩阵按列两两对换(reverse一下列的顺序),step2: 再按照右对角线对称,把元素交换即可。
例: [1,2,3] [3,2,1] [7,4,1] [4,5,6] -> [6,5,4] -> [8,5,2] [7,8,9] [9,8,7] [9,6,3]
代码:
note: 注意第二步对换的时候,只需要遍历左上半的矩阵即可,如果全部遍历,就又换回来了!另外,如果写辅助函数swap,而传的参数不是数组类型,只是传两个值的话,在swap执行完,是不会改变原数组的内容的!
public void rotate(int[][] matrix) { if (matrix.length <= 1) return; int n = matrix.length - 1; for (int i = 0; i <= n; i++) { reverse(matrix[i]); } int m = n; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[n - j][n - i]; matrix[n - j][n - i] = temp; } m--; } return; } public void reverse(int[] line) { int begin = 0, end = line.length - 1; while (begin < end) { int temp = line[begin]; line[begin++] = line[end]; line[end--] = temp; } return; }
相关文章推荐
- [leetcode]48. Rotate Image(Java)
- leetcode解题之48. Rotate Image java版(旋转图像)
- Leetcode 48. Rotate Image (Medium) (java)
- [LeetCode-Java]48. Rotate Image
- [leetcode-48]Rotate Image(java)
- leetcode_48. Rotate Image
- [leetcode 48] Rotate Image--------矩阵旋转90度
- [LeetCode-Algorithms-48] "Rotate Image" (2017.11.16-WEEK11)
- 【LeetCode】48. Rotate Image
- [Leetcode 66] 48 Rotate Image
- Leetcode48——Rotate Image
- 个人记录-LeetCode 48. Rotate Image
- Leetcode刷题记——48. Rotate Image(旋转图像)
- [LeetCode] 48. Rotate Image
- LeetCode 48 Rotate Image
- leetcode - 48.Rotate Image
- LeetCode_OJ【48】Rotate Image
- LeetCode48/189 Rotate Image/Rotate Array
- LeetCode – Rotate Image (Java)
- LeetCode 48. Rotate Image(旋转图片)