360笔试,第一题100,第二题没做完。。

都是暴利解的。。
第一题还画了半天正方体。。
第一次100🤣  第二题能不能帮我看看对不对
 public static void main1(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[][] arr = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m ; j++) {
                arr[i][j] = sc.nextInt();
            }
        }
        int areas = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m ; j++) {
                int num = arr[i][j];
                if(num == 0) continue;
                int area = num * 6 - 2 * (num - 1);
                if(i == 0 && j == 0) areas += area;
                else if(i == 0){
                    areas += area - 2 * (Math.min(num, arr[i][j-1]));
                }
                else if(j == 0){
                    areas += area - 2 * (Math.min(num, arr[i-1][j]));
                }else{
                    areas += area - 2 * (Math.min(num, arr[i][j-1])) - 2 * (Math.min(num, arr[i-1][j]));
                }

            }
        }
        System.out.println(areas);;
    }
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        HashMap<Integer, Integer> map1 = new HashMap<>();
        HashMap<Integer, Integer> map2 = new HashMap<>();
        for (int i = 0; i < n; i++) {
            int num = sc.nextInt();
            if(!map1.containsKey(num)){
                map1.put(num, 1);
            }else{
                map1.put(num, map1.get(num)+1);
            }
        }
        for (int i = 0; i < n; i++) {
            int num = sc.nextInt();
            if(!map2.containsKey(num)){
                map2.put(num, 1);
            }else{
                map2.put(num, map2.get(num)+1);
            }
        }
        for (int i = 0; i < m; i++) {
            if(!map1.containsKey(i)) map1.put(i, 0);
            if(!map2.containsKey(i)) map2.put(i, 0);
        }
        System.out.println(map1);
        System.out.println(map2);
        HashMap<Integer, Integer> res = new HashMap<>();
        for (int i = 0; i < m; i++) {
            res.put(i, 0);
        }
        for (int i = m - 1; i >= 0; i--) {
            for (int j = 0; j < m; j++) {
                int n1 = map1.get(j);
                int n2 = map2.get((m+i-j)%m);
                int num = Math.min(n1, n2);
                res.put(i, num + res.get(i));
                map1.put(j, n1 - num);
                map2.put((m+i-j)%m, n2 - num);
            }
        }
        String s = "";
        System.out.println(res.toString());
        for (int i = m - 1; i >= 0; i--) {
            int num = res.get(i);
            while(num > 0){
                s+= i + " ";num--;
            }
        }
        System.out.println(s.substring(0, s.length()-1));
    }





#360公司##笔试题目#
全部评论
楼主能讲下作者:offer速来速来 链接:https://www.nowcoder.com/discuss/224622?type=0&order=3&pos=53&page=1 来源:牛客网  for (int j = 0; j < m; j++) {                 int n1 = map1.get(j);                 int n2 = map2.get((m+i-j)%m);                 int num = Math.min(n1, n2);                 res.put(i, num + res.get(i));                 map1.put(j, n1 - num);                 map2.put((m+i-j)%m, n2 - num);这个啥意思么
点赞 回复 分享
发布于 2019-08-15 22:11
啊,,我第二题也是这个思路,,超时
点赞 回复 分享
发布于 2019-08-15 21:23
非常难受,我记得题目写的1<A<100,然后通过45%,在leetcode上发现不通过,把A取值可以当做0改了,就通过了
点赞 回复 分享
发布于 2019-08-15 21:21
一样哦
点赞 回复 分享
发布于 2019-08-15 21:19
55+1,我的复杂度太高
点赞 回复 分享
发布于 2019-08-15 21:19

相关推荐

不愿透露姓名的神秘牛友
01-07 00:20
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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