zoukankan      html  css  js  c++  java
  • 小红书19面试题总结(错题整理)

    1、对一棵先序遍历节点编号为12435678,中序遍历为42165738的二叉树,进行左子节点优先的广度优先遍历,搜索到编号为6的节点需要几次查询-------7

     中序遍历和后序遍历搞混了所以没做出来,先序中序后序的区别在于顶点节点的访问顺序,推断出树的结构,好做多了;

    广度优先遍历,是从上到下对每一层依次访问,在每一层,从左到右访问节点,所以顺序是,1,2,3,4,5,8,6,共7次

    2、下面关于数据库索引的描述正确的有()

    首先简单说一下联合索引:联合索引又叫复合索引,是由表中的几个列联合组成的索引。联合索引生效需满足最左前缀原则,即如果联合索引列为a,b,c三列,a,b,c 、a,b 、a生效,b,c、a,c、b、c等不生效(此处的顺序不是where条件后面的先后顺序,而是where条件中是否存在这些列,如果where中只存在a,c列,则不生效)。

    什么时候索引生效:
    1.表中含有索引。
    2.查询时全表扫描比使用索引效率低时(大多数情况效率低,当数据量少或其他特殊情况下,全表扫描比使用索引效率高时,mysql不使用索引)。
    3.满足索引生效的规则(例如表中是数值类型,传参是字符串类型)。

    什么时候使用强制索引 force index:当我们确定要使用一个索引进行查询时,就可以使用强制索引。但使用强制索引后,mysql优化器不会在指定到其他的索引上,不管查询条件如何变,都会使用该索引进行查询。

    3、某小红薯在小红书的活动中抽奖中了一定价值的薯券,这些薯券可以用来购买一批商品,求有多少种购买组合。其中一件商品可以买多件。

    输 入:薯券金额、商品分别价格
    输出 :组合数
    import java.util.Scanner;
     
    public class Main {
     
            public static void main(String[] args) {
                Scanner scanner =new  Scanner(System.in);
                int totalPrice = scanner.nextInt();
                String next = scanner.next();
                int length = next.length();
                String substring = next.substring(1, length-1);
                String[] split = substring.split(",");
                int[] arr =new  int[split.length];
                for (int i = 0; i < split.length; i++) {
                    arr[i] =Integer.parseInt(split[i]);
                }
                int[] dp =new int[totalPrice+1];
                dp[0]=1;
                for (int i : arr) {
                    for (int j = i; j <= totalPrice; j++) {
                        dp[j]+=dp[j-i];
                    }
                }
                System.out.println(dp[totalPrice]);
     
            }
    }
    

      

    4、薯队长写了一篇笔记草稿,请你帮忙输出最后内容。

     1.输入字符包括,"("    ,    ")"    和    "<"和其他字符。 
    2.其他字符表示笔记内容。
     3.()之间表示注释内容,任何字符都无效。    括号保证成对出现。
     4."<"表示退格,    删去前面一个笔记内容字符。括号不受"<"影响    。 
    import java.util.*;
     
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
     
            String in = sc.nextLine();
            StringBuilder sb = new StringBuilder();
            int count = 0;
            for(int i=0; i<in.length(); i++){
                char ch = in.charAt(i);
                if(ch == '('){
                    count++;
                }else if(ch == ')'){
                    count--;
                }else if(ch == '<'){
                    if(sb.length() > 0 && count == 0){
                        sb.deleteCharAt(sb.length()-1);
                    }
                }else{
                    if(count == 0){
                        sb.append(in.charAt(i));
                    }
                }
            }
            System.out.println(sb.toString());
        }
    }
    

      

    5、薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。    

    薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:
     1.不能出现连续编号的笔记。 
    2.总点赞总数最多 
    如果满足1,2条件有多种方案,挑选笔记总数最少的那种
    import java.util.Scanner;
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int nums = sc.nextInt();
            int[] dp = new int[nums+1];
            int[] flag = new int[nums+1];
            dp[1] = sc.nextInt();
            flag[1] = 1;
            for(int i = 2; i <= nums; i++){
                int in = sc.nextInt();
                dp[i] = Math.max(in + dp[i-2], dp[i-1]);
                if(dp[i] == dp[i-1]){
                    flag[i] = flag[i-1];
                }else{
                    flag[i] = flag[i-2]+1;
                }
            }
            System.out.println(dp[nums] + " " + flag[nums]);
        }
    }
    

      

    6、在游戏中,击败魔物后,薯队长获得了N件宝物,接下来得把这些宝物卖给宝物回收员来赚点小钱。这个回收员有个坏毛病,每次卖给他一件宝 物后,之后他就看不上比这件宝物差的宝物了。在这个世界中,衡量宝物的好坏有两个维度,稀有度X和实用度H,回收员在回收一个宝物A 后,下一个宝物的稀有度和实用度都不能低于宝物A。那么薯队长如何制定售卖顺序,才能卖给回收员宝物总个数最多。 

    还未做出来,待续

  • 相关阅读:
    JAVA基础知识之多线程——三种实现多线程的方法及区别
    JAVA基础知识之Collections工具类
    JAVA基础知识之Map集合
    JAVA基础知识之Queue集合
    JAVA基础知识之List集合
    JAVA基础知识之Set集合
    Java基础知识之集合(容器)简介
    JAVA中STL使用
    博客园皮肤
    RMQ
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/13056057.html
Copyright © 2011-2022 走看看