题解 | #首尾交替出队#

首尾交替出队

http://www.nowcoder.com/practice/4acc8bb985b84b68b935ce26c8f4d1b9

题意整理。

  • 从一队学生中,队头队尾交替抽取。

方法一(队列)

1.解题思路

  • 首先将所有的学生加入到双端队列。
  • 模拟队头队尾交替抽取的过程。

动图展示: alt

2.代码实现

import java.util.ArrayDeque;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        ArrayDeque deque = new ArrayDeque();

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String name = scanner.next();
            // 初始化队列中的数据
            deque.offerLast(name);
        }

        //只要队列大小大于2,不断从队头队尾打印学生名字
        while(deque.size()>=2){
            System.out.println(deque.pollFirst());
            System.out.println(deque.pollLast());
        }
        //如果队列中还有学生,则必定只有一个学生,直接打印其名字
        if(deque.size()>0){
            System.out.println(deque.pollFirst());
        }

    }

}

3.复杂度分析

  • 时间复杂度:假设学生数为n,总共有2n2*n次入队和出队操作,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外大小为n的双端队列,所以空间复杂度为O(n)O(n)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

01-22 14:36
门头沟学院 Java
不知道怎么取名字_:我就好奇,你是这家的hr还是?咋这都能搞到
点赞 评论 收藏
分享
02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
9
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务