为了账号安全,请及时绑定邮箱和手机立即绑定

检索放入HashMap中的数组

检索放入HashMap中的数组

蛊毒传说 2021-05-08 18:15:33
下面的代码是我为一个问题编写的答案,该问题要求将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中不起作用?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信