题解 | 【模板】序列操作

【模板】序列操作

https://www.nowcoder.com/practice/12da4185c0bb45918cfdc3072e544069

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        List<Integer> string = new ArrayList<Integer>();
        int q = in.nextInt();//操作的次数
        in.nextLine();
        
        for(int i = 0; i < q; i++){
            String line = in.nextLine();
            String[] caozuo = line.split(" ");
            changelist(caozuo,string);

        }
    }
    public static void changelist(String[] caozuo, List string){
        if(caozuo[0].equals("1")){
            int x = Integer.parseInt(caozuo[1]);
            string.add(x);
            return;
        }else if(caozuo[0].equals("2")){
            string.remove(string.size() - 1);
            return;
        }else if(caozuo[0].equals("3")){
            int i = Integer.parseInt(caozuo[1]);
            System.out.println(string.get(i));
            return;
        }else if(caozuo[0].equals("4")){
            int i = Integer.parseInt(caozuo[1]);
            int x = Integer.parseInt(caozuo[2]);
            string.add(i+1,x);
            return;
        }else if(caozuo[0].equals("5")){
            // 1. 按空格切分
            Collections.sort(string);
        return;
        }else if(caozuo[0].equals("6")){
            string.sort(Collections.reverseOrder());
        return;
        }else if(caozuo[0].equals("7")){
            System.out.println(string.size());
        }else if(caozuo[0].equals("8")){
            for(int i = 0;i < string.size() - 1; i++){
               System.out.print(string.get(i) + " "); 
            }
            System.out.print(string.get(string.size() - 1));
            System.out.println();
            
        }

    }
}

题目要求维护的是整数序列,而不是一个字符串。最合适的数据结构是 ArrayList<Integer>。这样增删查改、排序都直接有现成方法。

操作 2(删除末尾元素)、操作 3(按下标取元素)、操作 4(插入)、操作 5/6(排序)、操作 7(长度)、操作 8(输出整个序列),都可以直接用 ArrayList 实现。

Collections.sort(list);-->用的是 Collections 工具类里的静态方法。默认按照升序排序(即元素类要实现 Comparable 接口,例如 Integer)。

list.sort(Collections.reverseOrder());-->这是 List 接口自带的 default sort 方法(Java 8 引入)。接收一个 比较器 Comparator 作为参数。Collections.reverseOrder() 返回一个倒序的比较器。

全部评论

相关推荐

12-03 23:38
复旦大学 Java
点赞 评论 收藏
分享
10-30 16:31
重庆大学 Java
代码飞升_不回私信人...:你说你善于学习,大家都会说。你说你是985,985会替你表达一切
点赞 评论 收藏
分享
迷茫的大四🐶:干脆大厂搞个收费培训得了,这样就人均大厂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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