网易8.8笔试-JAVA岗第二题

分享一下我的思路:建立两个数组长度分别为int[m]target和int[n-m]other,其中n是最终输出的序列长度,m是题目所给的序列长度。
遍历从1到100000之间的数据,如果它不存在于target数组就将其加入other数组,直到other数组填充完毕。
最后设立两个指针,分别从两个数组头开始遍历,比较两个数大小,每次将较小的数拼接到stringbuilder里,直到两个数组遍历完成。
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);

        int n=in.nextInt();
        int m=in.nextInt();

        int []arr=new int[m];

        Set<Integer> set=new HashSet<Integer>();

        for(int i=0;i<m;i++){
            arr[i]=in.nextInt();
            set.add(arr[i]);
        }

        int len=n-m;
        int[]temp=new int[len];
        int count=0;

        //////////////////////////////////////
        for(int i=1;i<=100000;i++){
            if(count==len)break;
            if(!set.contains(i)){
                temp[count++]=i;
            }
        }

        ////////////////////////////
        int left=0;
        int right=0;
        StringBuilder builder=new StringBuilder();

        while(left<m&&right<len){
            if(arr[left]<temp[right]){
                builder.append(arr[left]);
                builder.append(" ");
                left++;
            }else{
                builder.append(temp[right]);
                builder.append(" ");
                right++;
            }
        }

        if(left>=m){
            for(int k=right;k<len;k++){
                builder.append(temp[k]);
                builder.append(" ");
            }
        }

        if(right>=len){
            for(int k=left;k<m;k++){
                builder.append(arr[k]);
                builder.append(" ");
            }
        }

        builder.deleteCharAt(builder.length()-1);

        System.out.println(builder.toString());

    }


}



#笔试题目##网易#
全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
AFBUFYGRFHJLP:直接去美帝试试看全奖phd吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务