二维数组的正确copy方法是
public int[][] clone(int[][] arr) {
int[][] fuckthem = new int[arr.length][arr[0].length];
for (int i = 0; i < arr.length; i++) {
fuckthem[i] = arr[i].clone();
}
return fuckthem;
}
起因
刷POJ3009题时碰到的问题(此处应有链接:http://poj.org/problem?id=3009),用dfs寻找到达目的地的最小步数,结果每一步搜索只选了一次方向,原因就算复制图时,把原始图的数据给改了。
一开始我是这样写的,发现改完copyOfMaps,maps也被改变了,导致递归回退时,整个图已经被改得乱七八糟了。
int[][] maps = new int[][]{
{1, 1},
{0, 1}
};
int[][] copyOfMaps = maps.clone();