下面的代碼是我為一個問題編寫的答案,該問題要求將nxn 2D矩陣旋轉90度(順時針),而無需創建新的2D數組。例如Given input matrix = [ [1,2,3], [4,5,6], [7,8,9]],rotate the input matrix:[ [7,4,1], [8,5,2], [9,6,3]]我試圖逐行執行此操作,但是必須處理的問題是如果該對索引已更改,該怎么辦。因此,如果我嘗試將索引對[1,2]分配給[0,1],但是[0,1]之前已經更改過。我想出的解決方案是使用HashMap,將索引對放入數組中作為鍵,并將原始數字作為值。這是我的代碼public void rotate(int[][] matrix) { int n = matrix.length; HashMap<int[], Integer> map = new HashMap<>(); for(int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ if(map.containsKey(new int[]{n-j,i})){ matrix[i][j] = map.get(new int[]{n-j, i}); } else{ int temp = matrix[i][j]; matrix[i][j] = matrix[n-j][i]; map.put(new int[]{n-j,i}, temp); } } } }但是,結果表明if(map.containsKey(new int[]{n-j,i})){ matrix[i][j] = map.get(new int[]{n-j, i}); }這行代碼不是在搜索我之前放入的數組。我知道我每次都在創建一個新數組,但是它如何使containsKey不知道該數組是否包含相同的數字(相同的數組)?誰能幫助我了解為什么在此處使用數組標記索引對在HashMap中不起作用?
添加回答
舉報
0/150
提交
取消