哎,笔试的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) 回帖