人人2019秋招Java工程师编程题题解.md

武培轩 2020年02月06日 70次浏览

630管道

题目描述

小C最近在学习数据结构,遇到了一个很有趣的问题:有一个长长的管道,管道只有右边的一个口,左边的口被堵死了。小C会往右边不断的往里面加数字,数字的范围是0-9,有三个神奇的数字分别是“6”,“3”,“0”,无论这三个数字的顺序,如果这三个数字碰到一起就会消失。比如现在管道中有1,2,3,3,6。这时又加了一个0进来,管道中的数字就变成了1,2,3,小C想知道他加完之后,管道中还剩下几个数字。

输入

输入有两行。
第一行是一个整数n(1<=n<=1000)
每二行会输入n个数字,每个数字用空格隔开,代表小C按顺序往管道里面放的数字。

输出

输出一个整数,代表管道中还剩下多少数字。

样例输入

8
1 2 3 3 6 0 0 6

样例输出

2

代码实现

package renren;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(sc.nextInt());
        }
        while (list.contains(0) && list.contains(3) && list.contains(6)) {
            for (int i = 0; i <= list.size() - 3; i++) {
                if ((list.get(i) == 6 && list.get(i + 1) == 3 && list.get(i + 2) == 0) || (list.get(i) == 6 && list.get(i + 1) == 0 && list.get(i + 2) == 3) || (list.get(i) == 3 && list.get(i + 1) == 6 && list.get(i + 2) == 0) || (list.get(i) == 0 && list.get(i + 1) == 3 && list.get(i + 2) == 6) || (list.get(i) == 0 && list.get(i + 1) == 6 && list.get(i + 2) == 3) || (list.get(i) == 3 && list.get(i + 1) == 0 && list.get(i + 2) == 6)) {
                    list.remove(i + 2);
                    list.remove(i + 1);
                    list.remove(i);
                }
            }
        }
        System.out.println(list.size());

    }
}

大黄玩手机

题目描述

大黄在打一款手机游戏"像素地牢"时,由于没有使用外挂,所以他很悲催的一次次失败。

于是他找到了你,想让你帮忙。

已知这款游戏里有n个怪物,对于每个怪物存在一个威胁值p,现在大黄想让你给这些怪物从小到大排个序,一遍确定他刷怪的顺序。

可是怪物实在太多辣!他想让你在排序的同时,顺便去下重。

大黄的游戏生涯全靠你了!所以你必须在1s内回答。

输入

第一行一个n,1<=n<=10000
第2-n+1个每行1个正整数,表示n个怪的威胁值。
对于30%的数据,1<=p<=10^6;
对于50%的数据,1<=p<=10^18;
对于100%的数据,1<=p<=10^100。

输出

一行一些正整数(个数小与等于n),用空格隔开,表示去重后的结果

样例输入

10
5
5
4
4
3
3
2
2
1
1

样例输出

1 2 3 4 5

代码实现

package renren;

import java.util.*;

public class Main2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Long> list = new ArrayList<>(n);
        for (int i = 0; i < n; i++) {
            list.add(sc.nextLong());
        }
        Set set = new HashSet(list);
        List resList = new ArrayList(set);
        Collections.sort(resList);
        for (int i = 0; i < resList.size() - 1; i++) {
            System.out.print(resList.get(i) + " ");
        }
        System.out.println(resList.get(resList.size() - 1));
    }
}