• NC_100_ATOI NC_102_lowestCommonAncestor NC_104_COMPARE_VERSION NC_109_ISLAND_NUM


    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/11/3
     */
    
    public class NC_100_ATOI {
    
        public int atoi(String str) {
            // write code here
            str = str.trim();//去掉前后的空格
            //如果为空,直接返回0
            if (str.length() == 0)
                return 0;
            int index = 0;//遍历字符串中字符的位置
            int res = 0;//最终结果
            int sign = 1;//符号,1是正数,-1是负数,默认为正数
            int length = str.length();
            //判断符号
            if (str.charAt(index) == '-' || str.charAt(index) == '+')
                sign = str.charAt(index++) == '+' ? 1 : -1;
            for (; index < length; ++index) {
                //取出字符串中字符,然后转化为数字
                int digit = str.charAt(index) - '0';
    
                //按照题中的要求,读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。
                //字符串的其余部分将被忽略。如果读取了非数字,后面的都要忽略
                if (digit < 0 || digit > 9)
                    break;
                //越界处理
                if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10))
                    return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
                else
                    res = res * 10 + digit;
            }
            return sign * res;
        }
    }
    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/9/3
     */
    
    public class NC_102_lowestCommonAncestor {
    
        public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
            // write code here
            return helper(root, o1, o2).val;
        }
    
        private TreeNode helper(TreeNode root, int o1, int o2) {
            if (root == null || root.val == o1 || root.val == o2) {
                return root;
            }
    
            TreeNode left = helper(root.left, o1, o2);
            TreeNode right = helper(root.right, o1, o2);
    
            if (left == null) {
                return right;
            }
    
            if (right == null) {
                return left;
            }
    
            return root;
        }
    
          public static class TreeNode {
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
          }
    
    }
    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/11/7
     */
    
    public class NC_104_COMPARE_VERSION {
    
        public static int compare (String version1, String version2) {
            // write code here
            String[] array1 = version1.split("\\.");
            String[] array2 = version2.split("\\.");
    
            int len1 = array1.length;
            int len2 = array2.length;
    
            if (len1 != len2) {
                if (len1 < len2) {
                    for (int i = 0;i<len2 - len1;i++) {
                        version1 = version1 + ".0";
                    }
                } else {
                    for (int i = 0;i<len1 - len2;i++) {
                        version2 = version2 + ".0";
                    }
                }
            }
            array1 = version1.split("\\.");
            array2 = version2.split("\\.");
            for (int i = 0;i<array2.length;i++) {
                String str1 = array1[i];
                String str2 = array2[i];
                while (str1.startsWith("0") && str1.length() > 1) {
                    str1 = str1.substring(1);
                }
    
                while (str2.startsWith("0") && str2.length() > 1) {
                    str2 = str2.substring(1);
                }
    
                if (str1.length() != str2.length()) {
                    if (str1.length() < str2.length()) {
                        return -1;
                    }
                    else {
                        return 1;
                    }
                }
    
                //比较每一位
                char[] chars1 = str1.toCharArray();
                char[] chars2 = str2.toCharArray();
                for (int j = 0;j<chars1.length;j++) {
                    char char1 = chars1[j];
                    char char2 = chars2[j];
                    if (char1 != char2) {
                        if (char1 - '0' > char2 -'0') {
                            return 1;
                        } else {
                            return -1;
                        }
                    }
                }
            }
    
            return 0;
        }
    
        public static void main (String[] args) {
            String version1 = "134.105.202.15.33.83.60.151.38.150.82.113.141.168.7.24.78.1.80.1";
            String version2 = "134.105.202.15.33.83.60.151.38.150.82.113.141.168.7.94.26.39.167.186.105.132";
    
            System.out.println(compare(version1, version2));
        }
    }
    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/7/24
     */
    
    public class NC_109_ISLAND_NUM {
    
        public int solve (char[][] grid) {
            // write code here
            if (grid == null || grid.length == 0) {
                return 0;
            }
    
            int nr = grid.length;
            int nc = grid[0].length;
            int num_islands = 0;
            for (int r = 0; r < nr; ++r) {
                for (int c = 0; c < nc; ++c) {
                    if (grid[r][c] == '1' ) {
                        num_islands++;
                        dfs(grid, r, c);
                    }
                }
            }
    
            return num_islands;
        }
    
        public void dfs(char[][] grid, int r, int c) {
            int nr = grid.length;
            int nc = grid[0].length;
    
            if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') {
                return;
            }
    
            grid[r][c] = '0';
            dfs(grid, r - 1, c);
            dfs(grid, r + 1, c);
            dfs(grid, r, c - 1);
            dfs(grid, r, c + 1);
        }
    }
  • 相关阅读:
    后端程序员必备的 Linux 基础知识+常见命令(近万字总结)
    信息收集流程
    在不影响程序使用的情况下添加shellcode
    使用Zolom内存解析运行python脚本(不落地)
    要点3:输入函数对比与自定义输入方式
    要点2:循环、条件控制
    对等连接和云联网
    上传自定义镜像到腾讯云
    Windows 激活
    MySQL错误(报错)一览表(对照表)
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15883466.html
Copyright © 2020-2023  润新知