360笔试 编程题 100 55

第一道 ac 求表面积
按行遍历,找出每块的左右暴露面积(前块高减后块高)
按列遍历,找出每块的前后暴露面积(同上)
上下面积为M*N*2
代码不放了
第二道 数字排列
用一两个M大小数组分别存入两数的值
结果从左到右遍历,每位上都找最大的取模值
取模查找方式:若找模为k的两数字,一个为i,另一即为((k M)- i)%M,通过上面的俩数组很好查找

import java.util.*;

public class Main {
    public static void main(String[] arg){
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int M = in.nextInt();
        int[] a=new int[N];
        int[] b=new int[N];
        int[] ma = new int[M];
        int[] mb = new int[M];

        for(int j=0;j<N;j ){
            a[j] = in.nextInt();
            ma[ a[j] ] ;
        }
        for(int j=0;j<N;j ){
            b[j] = in.nextInt();
            mb[ b[j] ] ;
        }
        int[] re = new int[N];
        int  flag = M-1;
        for(int k=0;k<N;k ){
            flag= fun(ma,mb,M,N,flag);
           re[k] = flag;
        }
        for(int i=0;i<M-1;i ){
            System.out.print(re[i] " ");
        }
        System.out.print(re[M-1]);
     }
     public static int fun(int[] ma,int[] mb,int M,int N,int flag){
        // flag[0] = M-1
        for(int k=flag;k>=0;k--){
            for(int i=0;i<M;i ){
                int s = ((k M)-i)%M;
                if(ma[i]>0 && mb[ s]>0){
                    ma[i]--;mb[s]--;
                    return k;
                }
            }
        }
        return -1;
     }
}
最后一分钟提交,过了55%,有没有大佬有最优方案?
#360公司##笔试题目#
全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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