有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 2D Arraylist预测代码的输出

(链接:https://www.interviewbit.com/problems/array_2d/) 在调用performOps时,很难对以下代码执行试运行

答:[[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;
}

谁能帮我理解一下吗


共 (2) 个答案

  1. # 1 楼答案

    尝试用变量值替换一个或两个循环。这将更容易理解这些问题,如果可能的话,在编辑器中编写代码,并一步一步地调试代码

    我试过一个循环

    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;
    }
    

    顺便说一下,输出将是二维集合,每个内部集合元素的顺序相反

  2. # 2 楼答案

    输出将是

    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
    

    然后在问题中询问进一步代码的输出。请仔细阅读这个问题。如果你还需要什么,请联系我。干杯