小红书2020秋招笔试真题
小红书2020秋招笔试真题
1、字符串倒序
【题目描述】薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组成了句子,最终要求把句子按单词反转解密。
说明:收集的时候单词前后可能会有多个空格,反转后单词不能有多个空格,具体见输入输出样例。
输入描述
输入一个字符串。包含空格和可见字符。长度<=10000。
输出描述
输出一个字符串,表示反转后结果。
输入样例
the sky is blue!
输出样例
blue! is sky the
【解题思路】
字符串操作。根据题意实现即可
【参考代码】
import java.util.*;
import java.lang.*;
public class Main {
public static void getReverseSentence(String str) {
String[] s = new String(str).split("\\s+");
if (s.length == 0) {
System.out.println(" ");
} else if (s.length == 1) {
System.out.println(s[0]);
} else {
System.out.print(s[s.length - 1]);
for (int i = s.length - 2; i >= 0; i--) {
System.out.print(" " + s[i]);
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
getReverseSentence(str);
}
}
2、笔记精选
【题目描述】薯队长写了n篇笔记, 编号从 1~n,每篇笔记都获得了不少点赞数。 薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:
1. 不能出现连续编号的笔记。
2. 总点赞总数最多
如果满足1,2条件有多种方案,挑选笔记总数最少的那种。
输入描述
输入包含两行。第一行整数n 表示多少篇笔记。
第二行n 个整数分别表示 n 篇笔记的获得的点赞数。(0<n<=1000, 0<=点赞数<=1000)
输出描述
输出两个整数x y。空格分割。
x 表示总点赞数,y表示挑选的笔记总数。
输入样例
4 1 2 3 1
输出样例
4 2
【解题思路】
扫描一次,满足不相邻且总赞数更多更新状态。
【参考代码】
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int optimalSum = 0;
int excludeSum = 0;
int optimalCount = 0;
int excludeCount = 0;
for (int i = 0; i < n; i++) {
int like = scanner.nextInt();
int nextOptimalSum = optimalSum;
int nextOptimalCount = optimalCount;
if (excludeSum + like > optimalSum
|| (excludeSum + like == optimalSum && excludeCount + 1 < optimalCount)) {
nextOptimalSum = excludeSum + like;
nextOptimalCount = excludeCount + 1;
}
excludeSum = optimalSum;
excludeCount = optimalCount;
optimalSum = nextOptimalSum;
optimalCount = nextOptimalCount;
}
System.out.println(String.format("%s %s", optimalSum, optimalCount));
}
}
3、击败魔物
【题目描述】薯队长来到了迷宫的尽头,面前出现了N只魔物,Hi表示第i只魔物的血量,薯队长需要在T个回合内击败所有魔物才能获胜。每个回合薯队长可以选择物理攻击一只魔物,对其造成1点伤害(物理攻击次数无上限); 或者消耗1点法力释放必杀技对其造成固定X点伤害(薯队长开始拥有M点法力)。问X至少多大,薯队长才有机会获胜;如果无论如何都无法在T回合内获胜,则输出-1
输入描述
第一行三个整数分别表示:N T M
第二行有N个整数:H1 H2 H3 … HN
对于50%的数据:
0 < N < 10^3
0 < T < 10^3
0 <= M <= T
0 < Hi < 10^4
对于100%的数据
0 < N < 10^5
0 < T < 10^7
0 <= M <= T
0 < Hi < 10^7
输出描述
输出一个整数,表示必杀技一次最少造成多少固定伤害
输入样例
3 4 3 5 2 1
输出样例
3
【解题思路】
二分答案,贪心的进行判断是否可行。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
bool check(int x, int n, int t, int m, vector<int> arr) {
for (int i = 0; i < n; ++i) {
if (m <= 0 || t <= 0) {
break;
}
if (arr[i] < x) {
continue;
}
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> 本专刊由牛客官方团队打造,主要讲解名企校招技术岗位的笔试题。 内容中包含多个名企的笔试真题,附有题目思路及参考代码 本专刊购买后即可解锁所有章节,故不可以退换哦~ <

