网易互娱笔试题

第一题只能过85...:
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long n1 = in.nextLong();
        long n2 = in.nextLong();
        long min = getMin(n1,n2);
        long max = getMax(n1,n2);
        System.out.print(min+" ");
        System.out.println(max);
    }

    private static long getMax(long n1, long n2) {
        if (n1 == n2) return n1;
        if (n1 < n2) {
            long tmp = n1;
            n1 = n2;
            n2 = tmp;
        }
        long res = n1;
        long i = 1;
        while (res % n2 != 0) {
            res = n1 * ++i;
        }
        return res;
    }

    private static long getMin(long n1, long n2) {
        if (n2 == 0)
            return n1;
        return getMin(n2,n1%n2);
    }
第二题100:
 public void removeDuplicates(ListNode head) {
        // 在这里编写代码
        int count = 1;
        ListNode last = head;
        ListNode cur = head.next;
        while (cur != null) {
            if (cur.val == last.val) {
                count++;
                if (count == 3) {
                    ListNode next = cur.next;
                    cur = next;
                    last.next = next;
                    count = 2;
                } else {
                    ListNode next = cur.next;
                    last = cur;
                    cur = next;
                }
            } else {
                count = 1;
                ListNode next = cur.next;
                last = cur;
                cur = next;
            }
        }
    }

第四题可以过75:
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        String[][] arr = new String[n][m];
        for (int i = 0; i < n; i++) {
            String str = in.next();
            for (int j = 0; j < str.length(); j++) {
                arr[i][j] = str.charAt(j)+"";
            }
        }

        if (n > m) {
            int tmp = n;
            n = m;
            m = tmp;
        }
        int maxBian = n;

        //i代表边长,从最大边长开始找,逐渐缩小要找的正方形的长度
        for (int i = maxBian; i >=1 ; i--) {
            //jk代表选定的第一个目标
            for (int j = 0; j <= n-i; j++) {
                for (int k = 0; k <= m-i; k++) {
                    //记录选定的字符
                    String begin = arr[j][k];
                    //l,o代表要寻找的与选定的字符相同的字符的坐标
                    //从jk的下一个位置开始往后搜索
                    for (int l = j; l <= n-i; l++) {
                        int o = k+1;
                        if (l != j) o =0;
                        a:for (; o <= m-i; o++) {
                            //此处找到与目标字符相同的字符
                            if (arr[l][o].equals(begin)) {
                                //接下来判断这个字符和目标字符是否按照规定的长度形成相同的字符串矩形
                                int width = 0;
                                int height = 0;
                                int q=j,w=k,e=l,r=o;
                                while (width < i) {
                                    while (height < i) {
                                        if (!arr[q][w].equals(arr[e][r])) {
                                            //只要发现没有对应上就跳出并继续寻找下一个可能的正方形
                                            continue a;
                                        } else {
                                            w++;
                                            r++;
                                        }
                                        height++;
                                    }
                                    height = 0;
                                    w=k;
                                    r=o;
                                    width++;
                                    q++;
                                    e++;
                                }
                                System.out.println(i);
                                System.out.println((j+1)+" "+(k+1));
                                System.out.println((l+1)+" "+(o+1));
                                return;
                            }
                        }
                    }
                }
            }
        }
        System.out.println(0);
    }




#网易互娱##题解#
全部评论
第一题同85
点赞 回复 分享
发布于 2019-09-20 19:40
第三题是不是01背包啊
点赞 回复 分享
发布于 2019-09-20 19:36
最大公因数*数a的另一个因子*数b的另一个因子=最小公倍数 (我也是现场隐约觉得有这个可能,推了下) 问题是呢...long可以承载a或者b 但是a*b的超出了long的范围 我改用大整数来计算和返回,ac了
点赞 回复 分享
发布于 2019-09-20 19:45
第一题同85
点赞 回复 分享
发布于 2019-09-20 19:49

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务