(链接:https://www.interviewbit.com/problems/array_2d/) 在使用
调用performOps时,难以对以下代码执行空运行A:[[1,2,3,4],[5,6,7,8],[9,10,11,12]]。
ArrayList<ArrayList<Integer>> performOps(ArrayList<ArrayList<Integer>> A) {
ArrayList<ArrayList<Integer>> B = new ArrayList<ArrayList<Integer>();
for (int i = 0; i < A.size(); i++) {
B.add(new ArrayList<Integer>());
for (int j = 0; j < A.get(i).size(); j++) {
B.get(i).add(0);
}
for (int j = 0; j < A.get(i).size(); j++) {
B.get(i).set(A.get(i).size() - 1 - j, A.get(i).get(j));
}
}
return B;
}
有谁可以帮助我理解它?
答案 0 :(得分:0)
输出
4 3 2 1
8 7 6 5
12 11 10 9
你必须尝试初始化A.这不是这种情况.A的值是
1 2 3 4
5 6 7 8
9 10 11 12
然后在问题中询问进一步代码的输出。请仔细阅读问题。如果您还有其他需要,请注意。欢呼
答案 1 :(得分:0)
尝试将变量值替换为一个或两个循环。这将更容易理解这些问题,如果可能的话,可以在编辑器中对其进行编码,并一步一步地通过代码进行调试。
我试过一个循环。
ArrayList<ArrayList<Integer>> performOps(ArrayList<ArrayList<Integer>> A) {
ArrayList<ArrayList<Integer>> B = new ArrayList<ArrayList<Integer>>();
//A.size() is 3
for (int i = 0; i < 3; i++) {
B.add(new ArrayList<Integer>());
//First Loop i = 0; A.get(0).size() = 4; Four elements in first index of array list
for (int j = 0; j < 4; j++) {
B.get(0).add(0); //Setting all elements to zeros
}
for (int j = 0; j < 4; j++) {
B.get(0).set(4 - 1 - j, A.get(0).get(j));
//For j = 0
// B.get(0).set(3, 1); //A.get(0).get(0) = 1
//For j = 1
B.get(0).set(2, 2); //A.get(0).get(1) = 2
//For j = 2
B.get(0).set(1, 3); // A.get(0).get(2) = 3
//For j = 3
B.get(0).set(0, 4); //A.get(0).get(3) = 4
}
//At the end of above loop B=[[4, 3, 2 ,1]]
}
return B;
}
顺便说一下,输出将是二维集合,每个内部集合元素的顺序相反。