小红书19面试题总结(错题整理)

2023年 9月 26日14:15:17 发表评论

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

小红书19面试题总结(错题整理)

 

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

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

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

小红书19面试题总结(错题整理)

 

 

首先简单说一下联合索引:联合索引又叫复合索引,是由表中的几个列联合组成的索引。联合索引生效需满足最左前缀原则,即如果联合索引列为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。那么薯队长如何制定售卖顺序,才能卖给回收员宝物总个数最多。 

还未做出来,待续

 

  • 版权声明:内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 1936370309@qq.com 举报,一经查实,本站将立刻删除。
  • 转载请注明:小红书19面试题总结(错题整理) 紫林博客

发表评论

您必须才能发表评论!