网易笔试第二题,帮忙看看有没有错,提交的算法才50%

//这个是最后几秒才想出来的,不够时间了,提交的复杂度太大
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int[] arr1=new int[num];
        int[] arr2=new int[num];
        int count = 0;
        while (in.hasNextInt()) {//注意while处理多个case
            int b = in.nextInt();
            arr1[count] = b;
            ++count;
        }
        int j = 0;
        if(num % 2 == 0) {
        	for(int i=count-1;i>=0;i=i-2) {
        		arr2[j++] = arr1[i];
        	}
        	for(int i=0;i<count-1;i=i+2) {
        		arr2[j++] = arr1[i];
        	}
        } else{
        	for(int i=count-1;i>=0;i=i-2) {
        		arr2[j++] = arr1[i];
        	}
        	for(int i=1;i<count-1;i=i+2) {
        		arr2[j++] = arr1[i];
        	}
        }
        for(int i=0; i< count;++i) {
        	System.out.print(arr2[i]);
        	if(i != count-1) {
        		System.out.print(" ");
        	}
        }
        
    }
}

全部评论
#!/usr/bin/env python #-*- coding:utf8 -*- def findNum(nums, n):     for i in range(n-1, -1, -2):         print nums[i],     if n&1 == 0:         for i in range(0, n, 2):             print nums[i],     else:         for i in range(1, n ,2):             print nums[i],   if __name__ == '__main__':     n = input()     nums = map(int, raw_input().split())     findNum(nums, n)
点赞 回复 分享
发布于 2017-08-15 11:19
以后不要在循环体中输出字符串和拼接字符了,每次循环有拼接字符,编译后都是通过new StringBuilder然后toString,想一下,循环十万次.new了十万个StringBuildier  ,gc又不一定来得及,不爆内存才怪
点赞 回复 分享
发布于 2017-08-15 10:53
我java用两个栈实现,50%  运行超时
点赞 回复 分享
发布于 2017-08-12 20:58
这个题java好像就是过不了
点赞 回复 分享
发布于 2017-08-12 17:52
蠢哭了,好像不用辅助数组,直接输出就行了
点赞 回复 分享
发布于 2017-08-12 17:31
我用了一个On数组 也是 爆内存 Scanner scanner = new Scanner(System.in); int n=scanner.nextInt(); int []array=new int[n]; if(n%2==0) { for (int i = 0; i < n; i++) { if (i % 2 == 1) { array[n / 2 - (i + 1) / 2] = scanner.nextInt(); } else { array[i / 2 + n / 2] = scanner.nextInt(); } } }else{ for(int i=0;i<n;i++){ if(i%2==0){ array[(n-1)/2-i/2]=scanner.nextInt(); }else{ array[(i+1)/2+(n-1)/2]=scanner.nextInt(); } } } for(int i=0;i<n;i++){ if(i==n-1){ System.out.print(array[i]); }else System.out.print(array[i]+" "); }
点赞 回复 分享
发布于 2017-08-12 17:20
我原先是超时,到最后几分钟的时候重新提交,给我显示内存溢出。。。最后几分钟,我直接不要辅助数组了,直接在for 循环中System.out输出。。。但时间不够我改。。
点赞 回复 分享
发布于 2017-08-12 17:17
哇,跟我写的一样,然而 也是50%
点赞 回复 分享
发布于 2017-08-12 17:16
Java过不了,会内存溢出,就算数组分配在堆上也会溢出。用C++过了。
点赞 回复 分享
发布于 2017-08-12 17:12

相关推荐

09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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