# 阿里笔试 8.14

第一题 ac
public class Alibishi1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int d = scanner.nextInt();
        HashSet<Integer> set = new HashSet<>();
        int[] arr = new int[n*n];
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < n*n ; i++) {
            int tmp = scanner.nextInt();
            arr[i] = tmp;
            max = Math.max(max, tmp);
            set.add(tmp);
        }

        int cur = max;
        while(cur > 0){
            if (set.contains(cur)){
                set.remove(cur);
            }
            cur = cur - d;
        }
        if (set.size() > 0){
            System.out.println(-1);
            return;
        }

        long sum = 0;
        for (int i = 0; i < n * n; i++) {
            sum += (max - arr[i]) / d;
        }
        System.out.println(sum);
    }
}
第二题 没来得及提交
public class Alibaba2 {
    public static int sum = 0;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] tmp = scanner.nextLine().toCharArray();
        int n = Integer.parseInt(tmp[0] + "");
        String[] strings = new String[n];
        for (int i = 0; i < n; i++) {
            strings[i] = scanner.nextLine();
        }
        for (int i = 0; i < n; i++) {
            sum = 0;
            System.out.println(method(strings[i]));

        }
    }

    public static int method(String s){
        int[] arr = method2(s);
        way1(arr);
        way2(arr);
        return sum;
    }
    public static void way1(int[] arr){
        int[] arrtmp1 = Arrays.copyOf(arr,arr.length);
        for (int i = 0; i < arr.length - 1; i++) {
            int p1 = 0;
            int p2 = 1;
            while(p2 < arr.length){
                while(arrtmp1[p2] < 9 && arrtmp1[p1] > 0 && arrtmp1[p2] < 9){
                    arrtmp1[p1]--;
                    arrtmp1[p2]++;
                    sum++;
                }
                p1++;
                p2++;
            }
        }
    }
    public static void way2(int[] arr){
        int[] arrtmp2 = Arrays.copyOf(arr,arr.length);
        for (int i = 0; i < arr.length - 1; i++) {
            int p1 = arr.length - 2;
            int p2 = arr.length - 1;
            while(p1 >= 0){
                while(arrtmp2[p1] < 9 && arrtmp2[p1] < 9 && arrtmp2[p2] > 0){
                    arrtmp2[p1]++;
                    arrtmp2[p2]--;
                    sum++;
                }
                p1--;
                p2--;
            }
        }
    }
    public static int[] method2(String s){
        char[] chars = s.toCharArray();
        int[] nums = new int[chars.length];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = Integer.parseInt(chars[i]+"");
        }
        return nums;
    }
}



#笔试题目##阿里巴巴#
全部评论
第二题这么做能行不。。我是用2个数字的和做条件做的,提交0,按理说至少长度为2的能过啊
点赞 回复 分享
发布于 2020-08-14 21:18

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务