360 笔试 全AC 思路鬼决的解法记录
笔试结束后上答案
其实想明白了,就特别简单
吐槽一下,测评做了一半,另一半一点没看就没时间了。。
第二题还有问题,中途还换了题目。。
第一题 寻找子串
直接去找单个字符出现的次数即可
#include <iostream>
#include <vector>
using namespace std;
int main() {
string str;
cin >> str;
vector<int> arr(26, 0);
int res = 0;
for(auto &it:str) res = max(res, ++arr[it-'a']);
cout << res << endl;
return 0;
}第二题 散步
吐槽一下,刚开始题目出错。。
维护两个 hash 表,一个代表当前点的情况,一个代表走完 D 步的情况
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
vector<int> arr(M);
for(int i=0; i<M; i++)
cin >> arr[i];
unordered_set<int> hashSet;
// 刚开始,有 N 种可能
for(int i=1; i<=N; i++)
hashSet.insert(i);
for(int i=0; i<M; i++) {
// 走完当前这一步可能的结果
unordered_set<int> temp;
for(auto &it:hashSet) {
// 当前点向左或向右仍在范围内,则放到哈希表中
if(it + arr[i] >= 1 && N >= it + arr[i])
temp.insert(it + arr[i]);
if(it - arr[i] >= 1 && N >= it - arr[i])
temp.insert(it - arr[i]);
}
// 更新 哈希表
swap(temp, hashSet);
}
cout << hashSet.size() << endl;
return 0;
}#360公司##笔试题目##题解#
凡岛公司福利 503人发布