第一题:
用STL的string的 find 和 erase:

首先,通过find找到需要删除的字符/字符串的位置:

string str;
string target;
int pos = str.find(target);

然后通过erase进行删除:

n = target.size();
str = str.erase(pos,n);
第二题:
https://www.nowcoder.com/questionTerminal/c0803540c94848baac03096745b55b9b?toCommentId=3154435

#include<iostream>
using namespace std;int main(){long long N,D;while(cin>>N>>D){long long res=0;long long *a=new long long[N];for(long long i=0,j=0;i<N;i++){cin>>a[i];while (i >= 2 && (a[i] - a[j]) > D) {    j++;}res +=(i - j-1) * (i - j) / 2;}cout<<res%99997867;return 0;}
}

我当时做的时候纠结的就是如何才能做到不重不漏啊(梦回高中了属于是),我的算法本来想用双循环找一串符合条件的数来Cn3的,感觉重合了,一时间想不出怎么搞就跳了,这里的话相当于锁定了一个最大数,然后让其他数来进行组合,这样的话就可以实现

3.17:我是个sb,只要最大值和最小值不就得了,排列组合nm呢

这里好像是有坑的,int 还会超限。。long都不行,必须得long long。。
第三题:
雀魂启动!
我写这题的时候一直在想如何判断胡,感觉好难顶,常用函数调用还不是太熟练,而且用的是dfs,不禁令人感叹。

核心代码:

bool isHu(vector<int> nums) {//其实是一个dfs的过程if (nums.empty())    return true;//递归出口int cnt = count(nums.begin(), nums.begin() + 4, nums[0]);//记录与首元素相同的数字的个数if (nums.size() % 3 != 0 && cnt >= 2) {//取雀头(只会取一次)if (isHu(vector<int>(nums.begin() + 2, nums.end())))   return true;}if (cnt >= 3) {//取刻子(三个相同的数字)if (isHu(vector<int>(nums.begin() + 3, nums.end())))    return true;}if (count(nums.begin(), nums.end(), nums[0] + 1) > 0 && count(nums.begin(), nums.end(), nums[0] + 2) > 0) {//取顺子int val = nums[0];nums.erase(nums.begin());//去掉一个首元素(顺子的第一个)nums.erase(find(nums.begin(), nums.end(), val + 1));//去掉一个首元素+1(顺子的第二个)nums.erase(find(nums.begin(), nums.end(), val + 2));//去掉一个首元素+2(顺子的第三个)if (isHu(nums)) return true;}return false;
}
 for (int i = 1; i <= 9; ++i) {//遍历下一张可能的牌if (count(nums.begin(), nums.end(), i) == 4)    continue;//最多就4张,真的不能再多了nums.insert(lower_bound(nums.begin(), nums.end(), i), i);//插入i,函数lower_bound()在first和last中的前闭后开区间,进行二分查找。返回从first开始的第一个大于或等于val的元素的地址。如果所有元素都小于val,则返回last的地址。注意:数组必须是排好序的数组。if (isHu(nums))     res.push_back(i);   //判断是否oknums.erase(lower_bound(nums.begin(), nums.end(), i));//恢复原始nums数组}

第四题:
特征提取
https://www.nowcoder.com/questionTerminal/5afcf93c419a4aa793e9b325d01957e2?answerType=1&f=discussion

核心知识:map,pair
用双字典轮滚解决
用一个老字典和一个新字典,最后的时候把老的换成新的,新的变空等待输入,这种方法适用于过去数据要传递到未来的情况。(连续问题)

#include<bits/stdc++.h>using namespace std;
int main(){int N,m;cin>>N;while(N--){cin>>m;int f,x,y;map<pair<int,int>,int> pre;//历史帧数map<pair<int,int>,int> now;//现在帧数int max_ = 0;for(int i =0; i< m;i++){cin>>f;for(int j =0; j< f;j++){cin>>x>>y;if(pre.count({x,y})){now[{x,y}] = pre[{x,y}] + 1;//又出现了一次,就是老的加1}else{now[{x,y}] = 1;//从来没有出现过}if(now[{x,y}]>max_){//时时更新任何一个连续帧max_ = now[{x,y}];}}//如果这帧为0,那么就不会保留任何历史信息了,因为now在这轮没有任何内容。pre.clear();//清空历史,把now变为历史pre.swap(now);//now 置空,同时,now变成上一个,这样的话连续问题就可以解决}cout<<max_<<endl;}return 0;
}

// 查询关键字为key的元素的个数,在map里结果非0即1
size_t count( const Key& key ) const; //

第五题:
https://www.nowcoder.com/questionTerminal/3d1adf0f16474c90b27a9954b71d125d?answerType=1&f=discussion
第一篇题解,很详细。
他的代码没有注释,所以写一下基于注释的代码

// 代码
#include<bits/stdc++.h>
using namespace std;
int main() {int n;cin >> n;vector<vector<int> > cost(n,vector<int>(n));//初始化for(int i=0;i<n;i++)for(int j=0;j<n;j++)cin >> cost[i][j];//输入int all = 1<<(n-1);//位运算,取2个n-1次方vector<vector<int> > dp(n,vector<int>(all));//初始化for(int i=0;i<n;i++)dp[i][0] = cost[i][0];//因为题目要求返回原点for(int j=1;j<all;j++){for(int i=0;i<n;i++){dp[i][j] = INT_MAX;//取最大值防止。。if(((j>>(i-1))&1)==0){for(int k=1;k<n;k++){if(((j>>(k-1))&1)==1){dp[i][j] = min(dp[i][j],cost[i][k]+dp[k][j^(1<<(k-1))]);}//带着循环看。就是取这几个的最小值。}}}}cout << dp[0][all-1] << endl;
}

第六题:
略。
第七题:
机器人跳跃问题
数学归纳法了属于是

方法一:
归纳:


#include<iostream>
#include<vector>#include<cmath>using namespace std;int main(){int N;int ans = 0;cin >> N;vector<int>D(N,0);for(int i = 0;i<N;i++)cin >>D[i];for(auto i in D){ans+=D[i]/pow(2,i);}cout<<ans<<endl;return 0;}

方法二,逆着解。

#include<iostream>
#include<vector>#include<cmath>using namespace std;int main(){int N;int ans = 0;cin >> N;vector<int>D(N,0);for(int i = 0;i<N;i++)cin >>D[i];for(int j=N-1;j>=0;j--){ans = ceil((D[j]+ans)/2.0);//注意c++中除法整数/整数为0,ceil向上取整要整数/float类型}cout<<ans<<endl;return 0;}

差不多就这样吧,焯!

2019字节跳动研发笔试题题解(C++)相关推荐

  1. 2021.4.11 字节跳动实习笔试题---情报解密

    2021.4.11 字节跳动实习笔试题-情报解密 题目内容 题目内容: 给你一个字符串,该字符串中有数字,字母(字母只有大写字母)以及一些其他的字符(例如:%,.等),如果首字母为字母或者数字的话,就 ...

  2. 字节跳动校招笔试题汇总

    1. 世界杯开幕式 思路:跟leetcode上求岛屿数量问题很像,使用DFS,这里要注意的是搜索方向从4个变成了8个,并且要输出最大区域里的人数. # coding:utf-8 M, N = list ...

  3. 字节跳动软件测试笔试题面试题-它终于来了

    岗位是深圳这边的IES系统的测试工程师... 第一次得到大厂的面试,心情有点小激动.面试全程线上,听面试官说她是一面.面试官是女士,带个眼镜的.黄头发. 1.自我介绍 2.我看你最近的工作才一年,换工 ...

  4. 字节跳动历届笔试题(3)

    题目描述 [编码题]字符串S由小写字母构成,长度为n.定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换.询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同? 输入描述: ...

  5. 这道字节跳动的面试题,据说多数人都不会

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 前 ...

  6. 字节跳动2020秋招研发笔试题

    字节跳动秋招研发笔试题 最近在忙考研,高数复习完了,看了下数据结构和算法,然后对人生比较迷茫. 该不该放弃考研,又怕考不上面临找工作的问题,索性看了几家科技巨头的秋招试题,贴下来和大家分享下 基本都是 ...

  7. 小鹏汽车2019春招自动驾驶中心研发笔试题(部分题解)

    小鹏汽车2019春招自动驾驶中心研发笔试题(部分题解) 链接:https://www.nowcoder.com/questionTerminal/ebd81731da404c0f9505c8a933c ...

  8. 蘑菇街2015校招 Java研发笔试题 详解,2015java

    蘑菇街2015校招 Java研发笔试题 详解,2015java 1. 对进程和线程描述正确的是( ) A.  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B.  改变 ...

  9. 2021多益网络春季校园招聘游戏研发笔试题(回忆版)

    2021多益网络春季校园招聘游戏研发笔试题 笔试题分为15道单选题,填空题,简答题,1道编程题 1单选题 就几乎是数据结构,计算机网络的题目,期末考试那种程度的选择题 2填空题 (1)求时间复杂度 ( ...

最新文章

  1. IntelliJ IDEA 最常用配置,应用、永久激活
  2. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
  3. centos6 mysql5.7.16_centos 6.5装mysql5.7
  4. 普通话计算机考试相关信息,普通话考试常见问题有哪些
  5. 【AI产品】产品小姐姐分析抖音背后的计算机视觉技术
  6. 2018常见的java面试题_2018新版Java常见面试题
  7. Mono新突破:CentOS 7.2下安装Mono 5.0
  8. MariaDB 条件语句WHERE
  9. 静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!
  10. java6打印机不能用_高分求解:java中调用的打印机在什么情况下不可用?
  11. Django复习:模型与管理网站
  12. CButton相关函数介绍
  13. 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第一节课笔记
  14. 线程池提交任务时submit()和execute()的区别
  15. Leetcode #317:离建筑物最近的距离
  16. netcore读取json文件_.Net Core读取Json配置文件的实现示例
  17. Win10怎么卸载.net framework?
  18. 电力安全教育之临时用电
  19. LaTeX中文生僻字显示
  20. java微博源码_基于jsp的微博-JavaEE实现微博 - java项目源码

热门文章

  1. python发明小故事_一个与python有关的故事
  2. N(奇数)阶幻方解法
  3. RationalDMIS 检具的测量
  4. python 3d绘图立方体_PythonOCC 3D图形库学习—创建立方体模型
  5. 1000行代码写小游戏(终)
  6. 正则表达式只获取数字
  7. [echarts] 案例大全 chartlib chartsdev ppchart madeapie MCChart
  8. Centos7 进入单用户模式
  9. ubuntu 10.04 安装sun java
  10. 51Nod_1417 天堂里的游戏【数学】