2018拼多多算法岗7-22笔试第一二三题

答案来自于网络
第一题:leetcode原题数组中的最长山脉
class Solution {
public:
int longestMountain(vector<int>& A) {
int tmp_len = 0;
int data_len = A.size();
int begin, end;
if (data_len < 3)
return tmp_len;
else
for (int i = 1; i < data_len - 1; i++)
{
begin = i;
while (begin > 0 && A[begin - 1] < A[begin])
begin--;
end = i;
while (end < data_len - 1 && A[end + 1] < A[end])
end++;
if (begin < i && end > i)
tmp_len = max(tmp_len, end - begin + 1);
}
return tmp_len >= 3? tmp_len:0;
}
};
大于号改成小于号就ok

第二题:网络原题周期字符串
# include <cstdio>
# include <iostream>
# include <string>
using namespace std;

int main()
{
string str;

cin >> str;
for (size_t i = 0; i < str.size(); ++i)
{
string sub = str.substr(0, i + 1);
int k = sub.size();
if (str.size() % k)
continue;
string subcmp = str.substr(0, i + 1);
int cnt = 1;
while (sub == subcmp) {
int tmp = k * cnt;
subcmp = str.substr(k * cnt++, i + 1);
}
if (subcmp.empty()) {
cout << str.substr(0, k) << endl;
break;
}
}
return 0;
}
第三题:leetcode原题到达终点数字
#include<iostream>
#include<vector>

using namespace std;

int reachNumber(int target) {
if (target<0) return reachNumber(-target);
int i = 0;
while (i*(i + 1) < 2 * target)
{
i++;
}
if (i*(i + 1) / 2 == target)
return i;
else
{
if ((i*(i + 1) / 2 - target) % 2 == 0)
return i;
else
{
if (i % 2 == 0)
return i + 1;
else
return i + 2;
}
}

}
int main()
{
int target;
cin >> target;
int result = reachNumber(target);
cout << result << endl;
return 0;
}


#拼多多##算法工程师##秋招##笔试题目#
全部评论
谢谢分享。
点赞 回复 分享
发布于 2018-07-22 22:42
看来大佬刷题很多啊,太强了
点赞 回复 分享
发布于 2018-07-22 23:13
什么时候才能达到大佬的水准
点赞 回复 分享
发布于 2018-07-23 10:29
同样喜欢鼬尼桑,为什么你那么优秀
点赞 回复 分享
发布于 2018-07-23 15:09
拼多多在26号19.00会做一个线上技术分享会,对技术部架构和岗位感兴趣的同学,想拿拼多多技术部offer的同学可以关注一下~~ 分享会链接在这里:  https://m.qlchat.com/topic/2000001645751647.htm?pro_cl=4
点赞 回复 分享
发布于 2018-07-25 22:28
**,这么多原题
点赞 回复 分享
发布于 2018-07-26 08:51

相关推荐

鼗:学校那里北改成中,学院改成大学 再放大以及加粗就行
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务