网易笔试第三题

本地跑可以通过,为何提交时一直说数组非法访问之类的。
题目是幸运袋子那题。
以下是代码:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner;  /**  * Created by wanghongxiang on 16/8/6.  */ public class LuckyPack { public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);  while (sc.hasNext()) { int N = sc.nextInt();  int[] arr = new int[N];  for (int i = 0; i < N; i++) {
                arr[i] = sc.nextInt();  }

            ArrayList<ArrayList<Integer>> res = subsetsWithDup(arr);   int count = 0;  for (ArrayList<Integer> s :
                    res) {

                System.out.println(s);  if (isLucky(s)) count++;   }
            System.out.println(count);   }

    } public static boolean isLucky(List<Integer> rs) { if(rs.size() ==0 || rs == null) return false;  int sum = 0;  int accum = 1;  for (int i = 0; i < rs.size(); i++) {
            sum += rs.get(i);  accum *= rs.get(i);  } return sum > accum;  } public static ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
        ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();  ArrayList<Integer> result = new ArrayList<Integer>();  Arrays.sort(num);  dfs(num, 0, result, results);  return results;  } private static void dfs(int[] num, int step, ArrayList<Integer> result,  ArrayList<ArrayList<Integer>> results)

    { if (!results.contains(result))
            results.add(new ArrayList<Integer>(result));  for (int i = step; i < num.length; i++) {
            result.add(num[i]);  dfs(num, i + 1, result, results);  result.remove(result.size() - 1);  }
    }
}
全部评论
这是
点赞 回复 分享
发布于 2016-08-07 20:02
这题就因为这问题卡了我一个多点,说多了都是泪
点赞 回复 分享
发布于 2016-08-07 11:27
楼主可以在你代码的最外层try catch一下,我试的结果是,系统输入多了个}
点赞 回复 分享
发布于 2016-08-07 01:58
我也是数组非法访问,我本地试了几个用例都没事。。
点赞 回复 分享
发布于 2016-08-06 21:20
每个人题目不一样。。你得说下题目。。。稍后我们会放出编程题来
点赞 回复 分享
发布于 2016-08-06 21:19

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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