首页 > shopee8.12笔试编程题供参考(非好的方法-……-)
头像
Auspicioushmm
编辑于 2020-08-12 16:18
+ 关注

shopee8.12笔试编程题供参考(非好的方法-……-)

哎,笔试的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) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐