0
この問題を考慮して、スパイラル行列を生成しようとしています。 整数nを指定すると、1からnまでの2乗の要素で満たされた正方行列をスパイラル順に生成します。たとえば、与えられたn = 4、ArrayListのArrayListを使用したスパイラル順序行列の作成
私は行列を生成するためにArrayListの戻り値の型を持つことを試みています。
私の問題は、生成が始まるたびに、列ごとに列ごとに更新され、各行と列に対して同じ値になることです。ここで
は私のコードです:
public static ArrayList<ArrayList<Integer>> generateMatrix(int a) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
//to create place holder for each element at the start - 0
ArrayList<Integer> zero = new ArrayList<Integer>();
for (int i=0; i<a; i++) {
zero.add(0);
}
for (int i=0; i<a; i++) {
res.add(zero);
}
int numToAdd = 1;
int top = 0;
int bottom = a-1;
int left = 0;
int right = a-1;
while (numToAdd <= a*a) {
for (int i = left; i<= right; i++) {
res.get(top).set(i, numToAdd);
numToAdd++;
}
top++;
for (int i = top; i <= bottom; i++) {
res.get(i).set(right, numToAdd);
numToAdd++;
}
right--;
for (int i=right; i>=left; i--) {
res.get(bottom).set(i, numToAdd);
numToAdd++;
}
bottom--;
for(int i=bottom; i>= top; i--) {
res.get(i).set(left, numToAdd);
numToAdd++;
}
left++;
}
return res;
}
。私はそれに気付かなかった! – tdel