Java solution different idea


#1

public ArrayList<ArrayList> diagonal(ArrayList<ArrayList> A) {
ArrayList<ArrayList > ret =
new ArrayList<ArrayList >(A.size()+A.size()-1);

    for (int i = 0; i < A.size(); i++) { 
         ArrayList<Integer> pod = new ArrayList<Integer>(); 
        int t=i;
        int k=0;
        while(t>=0){
            pod.add(A.get(k++).get(t--));
        }
        ret.add(pod);
        pod=null;
    }
 
     for (int i = 1; i < A.size(); i++) { 
        ArrayList<Integer> pod = new ArrayList<Integer>(); 
        int t=A.size()-1;
        int k=i;
        while(t>0 && k<A.size()){
            pod.add(A.get(k++).get(t--));
        }
        ret.add(pod);
        pod=null;
     }
    return ret;
}