获取2d arraylist元素-Java

拉维·克里希纳(Ravi Krishna)

我正在尝试为2D ArrayList实现螺旋输出。我在第38行收到IndexOutOfBoundsException错误:result.add(a.get(rightColumn).get(i));

从逻辑上看,我的代码对我而言是正确的。我不确定我在哪里犯错。有人可以给我一个有关如何解决这个问题的线索吗?谢谢!

import java.util.*;

public class Solution {
public static ArrayList<Integer> spiralOrder(final List<ArrayList<Integer>> a) {
     ArrayList<Integer> result = new ArrayList<Integer>();

     int direction = 0;

     /*
     *  0 for left to right
     *  1 for top to bottom
     *  2 for right to left
     *  3 for bottom to top
     */

     int topRow = 0;
     int bottomRow = a.size() - 1;

     int leftColumn = 0;
     int rightColumn = a.get(0).size() - 1;


     while (topRow <= bottomRow && leftColumn <= rightColumn) {

         if (direction == 0) {
           for (int i = leftColumn; i <= rightColumn; i++) {
               result.add(a.get(topRow).get(i));

           }  

           topRow++;
           direction = 1;
         }

         else if (direction == 1) {
             for (int i = topRow; i <= bottomRow; i++) {
                 result.add(a.get(rightColumn).get(i));

             }

             rightColumn--;
             direction = 2;
         }

         else if (direction == 2) {
             for (int i = rightColumn; i>= leftColumn; i--) {
                 result.add(a.get(bottomRow).get(i));

             }

             bottomRow--;
             direction = 3;
         }

         else if (direction == 3) {
             for (int i = bottomRow; i >= topRow; i--) {
                 result.add(a.get(leftColumn).get(i));

             }

             leftColumn++;
             direction = 0;
         }


     }


     for (int i = 0; i < result.size(); i++) {
         System.out.println(result.get(i));
     }

     return result;
}

public static void main (String[] args) {
    List<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();

    ArrayList<Integer> row1 = new ArrayList<Integer>();
    ArrayList<Integer> row2 = new ArrayList<Integer>();
    ArrayList<Integer> row3 = new ArrayList<Integer>();

    row1.add(1);
    row1.add(2);
    row2.add(3);
    row2.add(4);
    row3.add(5);
    row3.add(6);



    list.add(row1);
    list.add(row2);
    list.add(row3);

    spiralOrder(list);

}
}
霍奇

也许您应该在之外增加toprow

for (int i = leftColumn; i <= rightColumn; i++) {
       result.add(a.get(topRow).get(i));

   }
 topRow++;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取2d arraylist元素-Java

来自分类Dev

2D ArrayList Java中元素的索引

来自分类Dev

从 ArrayList (java) 中获取元素

来自分类Dev

在Java中获取2D数组中元素的位置

来自分类Dev

从arraylist元素java获取特定值

来自分类Dev

Java 2d Array或2d ArrayList?

来自分类Dev

在2D ArrayList中移动元素

来自分类Dev

在Java中将arraylist添加到2d arraylist

来自分类Dev

如何在Java中的ArrayList中获取元素

来自分类Dev

如何从Java arraylist到jsp脚本获取单个元素?

来自分类Dev

Java如何获取ArrayList中元素的开始和结束

来自分类Dev

在2d arraylist Java中设置值

来自分类Dev

在2D List / ArrayList Java上的行到行

来自分类Dev

Java中2D数组的数组的ArrayList

来自分类Dev

将Java 2D数组转换为带有流的2D ArrayList

来自分类Dev

将Java 2D数组转换为带有流的2D ArrayList

来自分类Dev

Java获取arraylist中两个元素之间的元素子列表

来自分类Dev

从ArrayList获取特定元素

来自分类Dev

2D arraylist元素替换为条件

来自分类Dev

将数组元素添加到2d ArrayList

来自分类Dev

如何创建2D ArrayList和添加元素

来自分类Dev

在Java中删除2d数组中的空元素

来自分类Dev

比较2D数组中行或列的元素(Java)

来自分类Dev

Java ArrayList不保留元素

来自分类Dev

在ArrayList Java中查找元素

来自分类Dev

Java ArrayList不保留元素

来自分类Dev

Java,从ArrayList中删除元素

来自分类Dev

获取Android 2D ArrayList内部的值?

来自分类Dev

元素的ArrayList链接并获取IndexOutOfBoundsException