哎,笔试的Android端,自己对这方面啥也不太懂,所以选择基本都是瞎选的,无奈c++后端岗位简历筛选的有点慢,所以笔试提前半小时搞定-.......-,要哭了,希望后端岗位再战了
1.重建二叉树
#include<iostream>
#include<string>
#include<vector>
#include<queue>
#include<cmath>
#include<sstream>
using namespace std;
struct Node {
int val;
Node* left;
Node* right;
Node(int a=0):val(a),left(nullptr),right(nullptr){}
};
Node* build(vector<int> &vec, int left, int right) {
if (left > right) return nullptr;
Node* p = new Node(vec[left]);
int index(-1);
for (int i = left + 1; i <= right; i++) {
if (vec[i] > vec[left]) {
index = i;
p->left = build(vec, left + 1, i - 1);
p->right = build(vec, i, right);
break;
}
}
if (index == -1) {
p->left = build(vec, left + 1, right);
}
return p;
}
int main() {
string s;
getline(cin, s);
stringstream S(s);
int n;
vector<int> vec;
while (S >> n) {
vec.push_back(n);
}
Node* root = build(vec, 0, vec.size()-1);
vec.resize(0);
queue<Node*> mystack;
mystack.push(root);
while (!mystack.empty()) {
root = mystack.front();
if (root->left == nullptr&&root->right == nullptr) vec.push_back(root->val);
if (root->left != nullptr) mystack.push(root->left);
if (root->right != nullptr)mystack.push(root->right);
mystack.pop();
}
sort(vec.begin(), vec.end());
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
system("pause");
return 0;
} 2.最长回文子串动态规划
3.版本号比较
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<sstream>
#include<cstring>
using namespace std;
int main() {
string ins;
cin >> ins;
int index, lenl = ins.size();
for (int i = 0; i < ins.length() ; i++) {
if (ins[i] == ',') index = i;
}
string str1, str2;
str1 = ins.substr(0, index);
str2 = ins.substr(index+1, lenl - index-1);
stringstream s1(str1);
int n1;
char tmp1;
vector<int> vec1;
while (s1 >> n1) {
vec1.push_back(n1);
s1 >> tmp1;
}
stringstream s2(str2);
int n2;
char tmp2;
vector<int> vec2;
while (s2 >> n2) {
vec2.push_back(n2);
s2 >> tmp2;
}
int len = min(vec1.size(), vec2.size());
for (int i = 0; i < len; i++) {
if (vec1[i] > vec2[i]) {
cout << 1;
return 0;
}
if (vec1[i] < vec2[i]) {
cout << -1;
return 0;
}
}
if (vec1.size() > len) {
for (int i = len; i < vec1.size(); i++) {
if (vec1[i] > 0) {
cout << 1;
return 0;
}
}
cout << 0;
return 0;
}
else if (vec2.size() > len) {
for (int i = len; i < vec2.size(); i++) {
if (vec2[i] > 0) {
cout << -1;
return 0;
}
}
cout << 0;
return 0;
}
else {
cout << 0;
system("pause");
return 0;
}
system("pause");
return 0;
}
全部评论
(2) 回帖