d202546

发布于:2025-04-07 ⋅ 阅读:(92) ⋅ 点赞:(0)

 

目录

一、罗马字符转数字

 二、二叉树的右视图

三、sql-查询结果的质量和占比


一、罗马字符转数字

 首先把两个字符组成一个数字做一下单独判断

然后就是单个字符转数字

public int romanToInt(String s) {
        int sum = 0;
        char[] ch = s.toCharArray();
        int i = 0;
        while(i < ch.length){
            if(i+1 < ch.length && ch[i] == 'I' && (ch[i+1] == 'V' || ch[i+1] == 'X')){
                sum += getVal("" + ch[i] + ch[i+1]);
                i++;
            } else if(i+1 < ch.length && ch[i] == 'X' && (ch[i+1] == 'L' || ch[i+1] == 'C')){
                sum += getVal("" + ch[i] + ch[i+1]);
                i++;
            } else if(i+1 < ch.length && ch[i] == 'C' && (ch[i+1] == 'D' || ch[i+1] == 'M')){
                sum += getVal("" + ch[i] + ch[i+1]);
                i++;
            } else {
                sum += getVal("" + ch[i]);
            }
            i++;
        }
        return sum;
    }
    public int getVal(String str){
        if(str.equals("I")){
            return 1;
        } else if(str.equals("V")){
            return 5;
        } else if(str.equals("X")){
            return 10;
        } else if(str.equals("L")){
            return 50;
        } else if(str.equals("C")){
            return 100;
        } else if(str.equals("D")){
            return 500;
        } else if(str.equals("M")){
            return 1000;
        } else if(str.equals("IV")){
            return 4;
        } else if(str.equals("IX")){
            return 9;
        } else if(str.equals("XL")){
            return 40;
        } else if(str.equals("XC")){
            return 90;
        } else if(str.equals("CD")){
            return 400;
        } else if(str.equals("CM")){
            return 900;
        }
        return -1;
    }

 二、二叉树的右视图

对二叉树进行层序遍历

将每一层最右边的值进行记录

 public List<Integer> rightSideView(TreeNode root) {
       Queue<TreeNode> queue = new LinkedList<>();
       if(root != null){
        queue.offer(root);
       }
       List<Integer> ret = new ArrayList<>();
       while(!queue.isEmpty()){
            List<Integer> temp = new ArrayList<>();
            int n = queue.size();
            while(n-- != 0){
                TreeNode now = queue.poll();
                temp.add(now.val);
                if(now.left != null){
                    queue.offer(now.left);
                }
                if(now.right != null){
                    queue.offer(now.right);
                }
            }
            ret.add(temp.get(temp.size()-1));
       }
       return ret;
    }

三、sql-查询结果的质量和占比

round(),四舍五入

count 不会统计null的值,这里可以使用if(true,a,b)来进行统计小于3的个数

select query_name,
round(avg(rating/position),2) as 'quality',
round(count(if(rating<3,1,null))*100/count(*),2) as 'poor_query_percentage'
from Queries
group by query_name;


网站公告

今日签到

点亮在社区的每一天
去签到