莉莉丝4.1笔试,好简单。。

第一题链表的另一种顺序返回,要求从头结点开始,后面的依次插入链表尾,链表头,链表尾
记录一个链表数组,找相对位置就行
       public ListNode formatList (ListNode head) {
        // write code here
        int num = 0;
        ListNode p = head;
        while(p != null){
            num++;
            p = p.next;
        }
        ListNode[] listNodes = new ListNode[num];
        int start = (num - 1)/2;
        int end = start+1;
        int glag = -1;
        int cnt = 0;
        p = head;
        while(p!=null){
            if(glag == -1){
                listNodes[start--] = p;
            }else {
                listNodes[end++] = p;
            }
            p = p.next;
            glag*=-1;
        }
        for (int i = 0; i < num - 1; i++) {
            listNodes[i].next = listNodes[i + 1];
        }
        listNodes[num - 1].next = null;
        return  listNodes[0];
    }
第二题简单的二分查找,排序后找,去个重就行
我这边当时直接写完了,其实找到第一个之后不需要再次二分查找,直接双指针向前向后就可以了,当时想的反正排序要nlogn,我这边降到n没有意义
     public long ans (int[] array, int k) {
        // write code here
        Arrays.sort(array);
        int start = 0;
        long res = 0;
        for (int i = 0; i < array.length; i++) {
            if(array[start] > k){
                break;
            }
            int index = partition(array, k - array[start]);//这边index的选取可以用双指针降到n
            if(index > start){
                res += (index - start);
            }
        }
        return  res;
    }
    public  int partition(int[] array, int k){
        int start = 0;
        int end = array.length;
        int res =-1;
        while(start <= end){
            int mid = (start + end)/2;
            if(array[mid] <= k){
                res = mid;
                start = mid + 1;
            }else{
                end = mid -1;
            }
        }
        return  res;
    } 

第三题环状数组分两半,求两部分和绝对差值最小
简单的滑动窗口,这边阔以在第二个while start之前设置一个==sum或者sum+1(和为奇数的情况),此时可以直接返回0/1降低了一些运行时间,这边写错了,我在交的代码改的,这里忘记改了
有的代码可能不能ac,我可能在上面改了点
       public long minimum (int[] a) {
        // write code here
        long res = Long.MAX_VALUE;
        long sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum+=a[i];
        }
                long tempsum = sum;
        sum = sum/2;
        long temp = 0;
        int start = 0;
        int end = 0;
        while(end < a.length){
            while(temp < sum && end < a.length){
                temp+=a[end++];
                res = Math.min(Math.abs(tempsum - temp*2), res);
            }
            if(end == a.length - 1){
                break;
            }//这里加个if判断阔以直接返回0/1
            while(temp >= sum && start < a.length){
                temp -= a[start++];
                res = Math.min(Math.abs(tempsum - temp*2), res);
            }
        }
        while(temp > sum ){
            temp -= a[start++];
            res = Math.min(Math.abs(tempsum - temp*2), res);
        }
        return res;
    }            

代码贴上来了,仓促之间写的很丑笑死,大家看个思路就行啦,有的代码可能有些许错误我的改动没有在本地改可能是,但是思路应该是这样的

#莉莉丝游戏##笔试题目#
全部评论
楼主问一下,你安排面试了吗,我4.1到现在没啥消息
1 回复 分享
发布于 2022-04-10 15:34
现在代码能发下吗
1 回复 分享
发布于 2022-04-01 21:48
第二题排序后二分是什么思路?怎么判断条件呢?
1 回复 分享
发布于 2022-04-01 21:24
投的算法 第一题简单 后面两题全是动态规划 第二题调试点成提交 就过0.5 第三天涂绳子直接没看懂
点赞 回复 分享
发布于 2022-04-02 09:47
第二题怎么二分呀
点赞 回复 分享
发布于 2022-04-01 20:57
你是什么岗位的笔试啊。。我感觉挺难的,第一道很简单,第二道是最大上升子序列, 第三道数字染色 搜了下好像是个ACM的题
点赞 回复 分享
发布于 2022-04-01 20:39

相关推荐

DBsan:我也遇到过好的HR,全程友好交流。这年头基本的礼貌和尊重为什么好多HR都做不到
找工作时遇到的神仙HR
点赞 评论 收藏
分享
真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
2
29
分享

创作者周榜

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