小红书2020校招算法题(三)
目录
- 一、笔记草稿
- 二、笔记精选
一、笔记草稿
题目描述:
薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
- 输入字符包括,"(" , “)” 和 "<"和其他字符。
- 其他字符表示笔记内容。
- ()之间表示注释内容,任何字符都无效。 括号保证成对出现。
- "<“表示退格, 删去前面一个笔记内容字符。括号不受”<"影响 。
Input:一行字符串。长度<=10000.
Output:一行字符串,表示最终的笔记内容。
示例:
输入
Corona(Trump)USA<<<Virus
输出
CoronaVirus
分析:
这题考察字符串基本知识,如字符串输入输出、特殊字符处理等,难度应该属于Easy
解题思路:
首先定义两个字符串变量,一个用来读取输入字符串,一个用来储存输出字符串(res)
遍历字符串,对每一个字符做if else判断,因为’(’、’)‘成出现,可以对’(’、’)‘其中一个处理,那么可分为三种情况:
(1)字符 ==’(’ 时,设置标记值,继续遍历,直到遇到‘)’时跳出循环;
(2)字符 ==‘<’ 时,如果res不为空,pop掉一个
(3)字符 == 正常字符时,不断向res中push就完事了。
C++代码实现
#include<iostream>
#include<string>
using namespace std;
int main(){string strs;getline(cin,strs); //从缓冲区读取一行字符串,也可用: cin>>strs;表示string res;int n=0;//遍历strs字符串对 "(" 、"<"和字符分别处理for(int i=0;i<strs.size();i++){if(strs[i] == '(' ){ i++;n++;while(i<strs.size() && n!=0){if(strs[i] == '(')n++;if(strs[i] == ')')n--;if(n==0) //直到括号内字符全部遍历完成,才跳出循环break;i++;} }else if(strs[i] == '<'){if(!res.empty())res.pop_back();}else{res.push_back(strs[i]);}}cout<<res<<endl; //输出目标字符串即可return 0;
}
二、笔记精选
题目描述:
薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。
薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:
- 不能出现连续编号的笔记。
- 点赞总数最多
如果满足1,2条件有多种方案,挑选笔记总数最少的那种。
Input:两行,第一行数字n,表示文章数;第二行数组nums,表示每篇文章的点赞数。
Output:满足条件的点赞总数和选取的文章数,中间用空格分开
示例:
输入
4
1 2 3 4
输出
4 2
分析:这题考察的是动态规划知识,由于需要返回选择的文章数,所以需要另外使用数组,在存储dp[i]时同时记录选择次数!难度属于dp中的Easy
解题思路:
初始化两个vector< int >数组:dp,dpNum,
(1)dp[i]表示从0-i满足条件的笔记点赞总数
(2)dpNum表示dp[i]中选取的笔记数
题目类似于dp经典问题:打家劫舍。很容易可以得到状态转移方程:
d p [ i ] = m a x ( d p [ i + 1 ] , d p [ i + 2 ] + n u m s [ i ] ) dp[i] = max(dp[i+1], dp[i+2]+nums[i]) dp[i]=max(dp[i+1],dp[i+2]+nums[i])
C++代码实现
#include<vector>
#include<iostream>
using namespace std;int main() {int n;cin >> n;vector<int> v;for (int i = 0; i < n; i++) { //读入一个整形数组int tp;cin >> tp;v.push_back(tp);}vector<int> dp(n), dpnum(n);dp[0] = v[0];dp[1] = max(v[0],v[1]); //初始化边界值dpnum[0] = 1;dpnum[1] = 1;for (int i = 2; i < n; i++) { if ((v[i] + dp[i - 2]) > dp[i - 1]) { //选用了v[i],所以篇数+1dp[i] = v[i] + dp[i - 2];dpnum[i] = 1+ dpnum[i - 2];}else { //没有选用,所以篇数不变,为前一个dpnum[i - 1]dp[i] = dp[i - 1];dpnum[i] = dpnum[i - 1];}}cout << dp[n-1]<<' '<< dpnum[n - 1]; //输出最多点赞数和篇数return 0;
}
小红书2020校招算法题(三)相关推荐
- 小红书2020校招算法笔试题卷一
小红书2020校招算法笔试题卷一 字符串倒序 薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组 成了句子,最终要求把句子按单 ...
- 小红书2020校招数据分析笔试题卷四 解析
小红书2020校招数据分析笔试题卷四 解析 单选题 多选题 填空题 简答题 题目来自小红书2020校招数据分析笔试题卷四 单选题 如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价 ...
- 小红书2020校招前端笔试题卷三
小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...
- 小红书2020校招测试开发后端笔试题卷一
"记录一下做的小红书的笔试" 题目描述: 薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 &quo ...
- 小红书2020校招第7题
题目描述: 薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 输入字符包括,"(" , ")" 和 "<"和其他字符. 其他字符表示笔记 ...
- 小红书2020校招前端笔试题卷一
题目1-下列说法正确的是()多选 A: requestAnimationFrame(foo) 确保使浏览器在下一次重绘之前调用 foo 方法B: 在 addEventListener 的处理方法中使用 ...
- 剪绳子 算法_[校招-算法题]动态规划
动态规划(Dynamic Programming)是面试中非常常见的一种算法,可以解决很多复杂问题. 核心算法: 定义状态:dp[i],一个数组,具体几维根据问题定. 状态转移方程:dp[i] = b ...
- 招聘 | 小红书招聘NLP算法工程师(社招,预训练方向)
进NLP群->加入NLP交流群 小红书招聘NLP算法工程师(社招,预训练方向) 岗位职责 候选人入职后将从事NLP预训练模型方面的工作,包括BERT.GPT等大模型的预训练及其在业务上的应用. ...
- 【小红书】2020校招编程题
目录 1.薯券使用问题 2.笔记草稿 3.笔记精选 4.倒卖战利品 5.字符串倒序 6.迷宫游戏 1.薯券使用问题 某小红薯在小红书的活动中抽奖中了一定价值的薯券,这些薯券可以用来购买一批商品,求有多 ...
最新文章
- C++中Ansi、Unicode、UTF8字符串之间的转换和写入
- android sdk版本控制,1. 统一SDK版本管理配置
- 一文读懂P Quant与 Q Quant ,量化交易与金融工程
- web浏览器录音:web audio api
- jQuery停止动画
- 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)
- php json 不转义,php json_encode中文不转义
- react dispatch_梳理下redux、mobx 在react的应用
- python3编译成exe运行_python3.x的程序如何打包成exe可执行文件
- 俺是一个IT女白领?
- Android性能优化 -- 自启动管理
- 上交计算机系专硕学费,上海交通大学2021级专硕学费再涨,最高翻3倍!@上海考研党...
- python找列表中相邻数的个数_利用python求相邻数的方法示例
- EVE模拟器关联CRT与Wireshark
- linux系统中同时开启wifi与热点的办法
- 超导量子计算机最新报道,量子效应的量子计算机,在高温超导体加持下,或将迎来重大突破!...
- python--真气网监测站点数据的抓取
- 【人工智能项目】深度学习实现10类猴子细粒度识别
- Python/excel:正态分布直方图
- 红外线测速仪 简易实现
热门文章
- 斯科特.杨《如何高效学习》
- 查看Git用户名/密码/邮箱,及设置git配置
- ICT生态最缺的是什么?人才,还是人才!
- 知识付费App要如何进行开发?
- intel gfx driver --- AGPGART
- PL/SQL 002---PL/SQL的基本能概念--2.1功能特点--2.1.1结构化程序设计
- 很落地的chatgpt应用场景——批量制作抖音爆款带货文案并直接SEO霸屏1 小时前
- VC的resources.h中各项的意涵
- 戴森《2022年全球头发研究报告》重磅发布 未来拟斥资5亿英镑实现20项全新科技
- codevs 1083