当前位置: 首页 > news >正文

小红书2024秋招后端开发(Java工程师、C++工程师等)

前几天做了美团,OPPO的秋招笔试题,然后又做了一场小红书,总体难度我觉得都差不多,涉及到的知识点要么是语法模拟,或者就是一些基础算法,所以这样看秋招编程题还是很简单的,对于笔试我们还要把除了算法题以为的选择题做好,比如我看还有好多MySQL之类的题,好了话不多说,我们来看一下小红书2024秋招后端开发的题,先贴个链接 题目测评链接——

目录

A题

题面

思路分析

代码实现

B题

题面

思路分析

代码实现

C题

题面

思路分析

代码实现

总结 

A题

题面

思路分析

首先我们按要求读入每个字符串,然后开一个map统计维护每个字符串的个数,如果该种字符串数量大于等于三,我们就将其放入pair数对里,因为题目中说明了排序输出方式,那我们需要对pair按要求开个cmp排个序就行了——

代码实现

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <climits>
#include <vector>
#define int long long
#define x first 
#define y second 
using namespace std;
const int N = 1e5 + 10;
typedef pair<string,int> PII;
PII p[N]; 
bool cmp(const PII &a,const PII &b)
{if(a.y != b.y) return (a.y > b.y);else return a.x < b.x;
}
void solve()
{map<string,int> mp;string str;while(cin >> str)   {mp[str]++;}// for(auto &c : mp) cout << c.x << " " << c.y << endl;int i = 0;for(auto &c : mp){if(c.y >= 3)p[i++] = {c.x,c.y};      }sort(p , p + i ,cmp);for(int j = 0; j < i; j++) cout << p[j].x << endl;}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t = 1;while(t -- ) solve();return 0;
} 

B题

题面

思路分析

这题其实就是01背包的变式问题,我们在01背包的基础上加了一维,变成了三维,不会01背包的可以先参考acwing这篇题解AcWing 2. 01背包问题(状态转移方程讲解) - AcWing 学习理解一下01背包之后再看这题就能知道怎么做了,我们定义一个dp[i][j][k],表示前i件事假在花费不超过j个时间和不超过k个精力下可以获得的最大快乐值,然后我们三重for循环,如果当前时间大于j或者精力大于k,则 dp[i][j][k] = dp[i - 1][j][k],表示不选,则和前一个状态一样。否则dp[i][j][k] = max(dp[i - 1][j][k] , dp[i - 1][j - a[i]][k - b[i]] + c[i]),即为当前状态选或不选,下面我们直接看代码——

代码实现

//01背包问题#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <climits>
#include <vector>
#define int long long
#define x first 
#define y second 
using namespace std;
const int N = 55;
int dp[N][510][510];
int a[N],b[N],c[N];void solve()
{int n;cin >> n;int T,H;cin >> T >> H;for(int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i];for(int i = 0; i <= n; i++) dp[i][0][0] = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= T; j++) {for(int k = 1; k <= H; k++){//if(i == 1 && !((j < a[i]) || (k < b[i])))   dp[i][j][k] = c[i];//else if(i == 1) continue;if(a[i] > j || b[i] > k)  dp[i][j][k] = dp[i - 1][j][k];else dp[i][j][k] = max(dp[i - 1][j][k] , dp[i - 1][j - a[i]][k - b[i]] + c[i]);}}}cout << dp[n][T][H] << endl;}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t = 1;while(t -- ) solve();return 0;
} 

C题

题面

思路分析

按照题意我们求最多染红的节点肯定是想到贪心,优先染红子节点而非父节点,因为儿子节点有多个,父亲节点染色后与其关联的儿子节点都不能被染色,然后需要用到树的dfs去回溯执行染色操作,开两个数组,第一个vis判断节点有没有被访问过,第二个col进行染色操作——

代码实现

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <climits>
#include <vector>
#define int long long
#define x first 
#define y second 
using namespace std;
const int N = 1e5 + 10;
bool vis[N];//判断结点有没有被访问
bool col[N];//染色
int a[N];//存储权值
vector<int> G[N];//构造树
int res;bool is_prime(int x)
{if(x < 2) return false;for(int i = 2; i <= x / i; i++){if(x % i == 0) return false;}return true;
}int dfs(int rt)
{vis[rt] = true;for(int i = 0; i < G[rt].size(); i++){int son = G[rt][i];// cout << son << endl;if(vis[son] == true) continue;dfs(son);if(is_prime(a[son] + a[rt])) {if(col[rt] == 0) {col[son] = 1;// cout << rt << " " << son << endl;res++;}}}return res;
}void solve()
{int n;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i <= n - 1; i++)//注意不能读n个{int u,v;cin >> u >> v;G[u].push_back(v);G[v].push_back(u);}cout << dfs(1) << endl;
}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t = 1;while(t -- ) solve();return 0;
} 

总结 

最后其实我觉得小红书这场笔试题目质量还是很不错的,对于我们训练有着很好的意义,加油——

相关文章:

  • Webpack 特性探讨:CDN、分包、Tree Shaking 与热更新
  • idea2024设置中文
  • websokets交叉编译
  • SpringBoot 注解 @AutoConfiguration 在 2.7 版本中被新增(使用方法)
  • Android常用C++特性之std::lock_guard
  • Spring自动装配的5种方式
  • Android中大量使用建造者模式(Builder Pattern)的原因可以归结为以下几点:
  • 【华为HCIP实战课程三】动态路由OSPF的NBMA环境建立邻居及排错,网络工程师
  • [Linux]僵尸进程,孤儿进程,环境变量
  • NGINX+LUA编译安装
  • 关于Obj文件格式介绍与Unity加载Obj文件代码参考
  • 9.24作业
  • vue实现左侧数据拖拽到右侧区域,且左侧数据保留且左侧数据不能互相拖拽改变顺序
  • 注册中心Eureka
  • 面试-2024年9月13号
  • @angular/forms 源码解析之双向绑定
  • C# 免费离线人脸识别 2.0 Demo
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Map集合、散列表、红黑树介绍
  • Swift 中的尾递归和蹦床
  • WePY 在小程序性能调优上做出的探究
  • 好的网址,关于.net 4.0 ,vs 2010
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端知识点整理(待续)
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • ionic异常记录
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (70min)字节暑假实习二面(已挂)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (初研) Sentence-embedding fine-tune notebook
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)opengl函数加载和错误处理
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core引入性能分析引导优化
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 发送邮件
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET开源快速、强大、免费的电子表格组件
  • @EnableWebMvc介绍和使用详细demo
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)