【问题标题】:Store element into another list将元素存储到另一个列表中
【发布时间】:2015-10-23 15:40:00
【问题描述】:

需要一点帮助。做作业,我必须使用 ArrayDeque 对列表进行排序。我可以检查第一个和最后一个元素。 我有一个列表,例如

int[] list = {6, 8, 7};

第一个元素 - 6 - 将进入空数组,这没问题。 第二个元素 - 8 - 将在 6 之后,所以我们会有[6,8],然后是 7。因为我不能把它放在 6 前面,我不能把它放在 8 后面。所以我必须将 7 存储到我以后可以返回的其他列表中。我怎么做?欢迎任何提示。 谢谢。 (很抱歉,如果这是以前曾问过但找不到解决方案的问题)

【问题讨论】:

  • 使用 ArrayDeque 对列表进行排序。为什么会有人这样做?为什么不使用Arrays.sort(list)
  • 如你所见,这是家庭作业
  • 我明白这一点,但这对我来说没有任何意义。听起来像是“我需要用香蕉去下一个城市”。

标签: java list data-structures


【解决方案1】:

让我先澄清一下你的限制。你只能:

  • 获取第一个元素的值
  • 删除第一个元素
  • 在第一个元素之前添加
  • 获取最后一个元素的值
  • 删除最后一个元素
  • 在最后一个元素之后追加

一种将数组中的值添加到上述结构中的算法,使用堆栈:

  • 对于数组中的每个值
  • 如果该值小于卡组中的第一个 -> 前置
  • 否则,如果该值大于卡组中的最后一个值 -> 追加
  • else 如果值更接近第一个:
    • 删除第一个元素并反复压栈,只要第一个元素更小
    • 将值添加到卡片组
    • 当堆栈不为空时,从堆栈中弹出并添加到卡片组
  • 其他:
    • 移除最后一个元素并反复压栈,只要最后一个元素更大
    • 将值附加到卡片组
    • 当堆栈不为空时,从堆栈中弹出并附加到卡片组

如果不允许使用堆栈,但允许使用递归,则可以使用调用堆栈到同一端

【讨论】:

    【解决方案2】:

    您可以做的是将索引 x 处的 int 值存储到局部变量中,然后遍历数组查看是否有一个值低于当前存储的值,如果是,则成为新的较低值。当它完成遍历数组时,您可以将其输入到新数组中。

    【讨论】:

      【解决方案3】:
      public static void main(String[] args){
          Scanner sc = new Scanner(System.in);
          ArrayDeque<Integer> container = new ArrayDeque<>();
          ArrayDeque<Integer> container2 = new ArrayDeque<>();
          System.out.println("Please enter 10 number with space");
          for(int i=0;i<10;i++){
              container.add(sc.nextInt());
          }
      
          while (!isSorted(container.isEmpty()?container2:container)) {
              while (!container.isEmpty()) {
                  int a = container.poll();
                  if(container.peek()!=null && a<container.peek()){
                      if(container2.peek()!=null && container2.peek()>container.peek()){
                          container2.addFirst(a);
                      }else{
                          container2.addLast(a);
                      }
                  }else if(container.peek()!=null){
                      if(container2.peek()!=null && container2.peek()>container.peek()){
                          container2.addFirst(container.poll());
                      }else{
                          container2.addLast(container.poll());
                      }
                      container.addFirst(a);
                  }else{
                      container2.addLast(a);
                  }
              }
              while (!container2.isEmpty()) {
                  int a = container2.poll();
                  if(container2.peek()!=null && a<container2.peek()){
                      if(container.peek()!=null && container.peek()>container2.peek()){
                          container.addFirst(a);
                      }else{
                          container.addLast(a);
                      }
                  }else if(container2.peek()!=null){
                      if(container.peek()!=null && container.peek()>container2.peek()){
                          container.addFirst(container2.poll());
                      }else{
                          container.addLast(container2.poll());
                      }
                      container2.addFirst(a);
                  }else{
                      container.addLast(a);
                  }
              }
          }
          while (!container.isEmpty()) {
              System.out.println(container.poll());
          }
          System.out.println("---------------------------");
          while (!container2.isEmpty()) {
              System.out.println(container2.poll());
          }
      }
        static boolean isSorted(ArrayDeque<Integer> con){
           boolean answer = true;
          for(int i=0;i<con.size()-1;i++){
              int a = con.poll();
              con.addLast(a);
              if(con.peek()!=null && a>con.peek()) answer= false;
          }
           con.addLast(con.poll());
          return answer;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多