leet (Reshape the Matrix)
阿新 • • 發佈:2018-11-27
Title:Reshape the Matrix 566
Difficulty:Easy
原題leetcode地址:https://leetcode.com/problems/array-partition-i/
1. 採用了一位陣列作為中間的過度,先將原來的二維陣列儲存到過度的一維陣列中,然後將過度的一維陣列儲存到二維陣列中
時間複雜度:O(n^2),巢狀遍歷。
空間複雜度:O(n),申請的最長空間長度為r * c。
/** * 採用了一位陣列作為中間的過度,先將原來的二維陣列儲存到過度的一維陣列中,然後將過度的一維陣列儲存到二維陣列中 * @param nums * @param r * @param c * @return */ public static int[][] matrixReshape(int[][] nums, int r, int c) { int row = nums.length; int column = nums[0].length; if (r * c != row * column) { return nums; } int k = 0; int tmp[] = new int[row * column]; int result[][] = new int[r][c]; for(int i = 0; i < row; i++) { for(int j = 0; j < column; j++) { tmp[k++] = nums[i][j]; } } int kk = 0; for(int i = 0; i < r; i++) { for(int j = 0; j < c; j++) { result[i][j] = tmp[kk++]; } } return result; }
2.整除為行,求餘為列
時間複雜度:O(n),一次一層遍歷,最長遍歷為r * c。
空間複雜度:O(n),申請的最長空間長度為r * c。
/** * 整除為行,求餘為列 * @param nums * @param r * @param c * @return */ public static int[][] matrixReshape1(int[][] nums, int r, int c) { int row = nums.length; int column = nums[0].length; if (r * c != row * column) { return nums; } int result[][] = new int[r][c]; for(int i = 0; i < r * c; i++) { result[i / c][i % c] = nums[i / column][i % column]; } return result; }