2017-02-15 105 views
0

(聯繫:https://www.interviewbit.com/problems/array_2d/)具有用於與performOps下面的代碼執行幹運行困難 被稱爲與2D Arraylist-預測輸出的代碼

一個:[[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

[爲什麼「有人可以幫我嗎?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236) –

回答

0

輸出將是

4 3 2 1 
8 7 6 5 
12 11 10 9 

你必須嘗試初始化A.That不是A的情況下更換預定值

1 2 3 4 
5 6 7 8 
9 10 11 12 

,然後進一步碼輸出在問題中提問。請仔細閱讀問題。如果您需要任何其他內容,請聯繫我們。乾杯

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

順便說一下,輸出將是二維集合與每個內部收集元素以相反的順序。