# 阿里笔试 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

相关推荐

09-19 19:10
已编辑
产品经理
点赞 评论 收藏
分享
找只鸡:可以,直接拉黑这个邮箱
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务