美團2020春招筆試


  經過連個小時的筆試考試真的發現自己的編碼水平還是不行,感覺都是很簡單的題,但是提交上去之后總是不能夠AC,自己平時寫代碼也都是慢悠悠的寫,沒有注意過時間,經過這次的筆試,發現自己在規定的時間內寫出一些沒有bug代碼,真的很難。

 

  像第一題,我知道該怎么寫,但是寫的時候思路很混亂,有些特殊的時間點也考慮不周全。結果提交了只通過了部分代碼。感覺這次考試用到的數據結構的東西並不是太多,主要就是一些數學題。奈何自己大學不是數學專業的,也怪自己太菜了,平時也沒有總結所學知識的習慣。感覺這次是沒希望了,那么自己接下來應該選擇什么樣的路呢?

 

~~貼一下自己這兩個小時寫的代碼吧,以后有時間在改正~~

 

No 1.

#include<iostream>
#include<string>
#include<cmath>
#include<iomanip>

using namespace std;

int main() {
    int day, curMin;
    string time;
    cin >> day >> time >> curMin;
    int hh = stoi(time.substr(0, 2)) + 24 * (day - 1);
    int mm = stoi(time.substr(3, 2));
    int totalMin = hh * 60 + mm;

    int preMin;
    if (totalMin >= curMin) {
        preMin = totalMin - curMin;
        day = preMin / (24*60);
        hh = (preMin % (24*60)) / 60;
        mm = (preMin % (24*60)) % 60;
    } else {
        preMin = curMin - totalMin;
        day = 7 - (preMin / (24*60)) % 7;
        hh = 24 - (preMin % (24*60)) / 60;
        mm = 60 - (preMin % (24*60)) % 60;
    }

    cout << day << endl;
    cout << setfill('0');
    cout << setw(2) << hh << ":" << setw(2) << mm << endl;

    return 0;
}

剛才又看了一些代碼,發現自己真的犯了一個很低級的錯誤,寫變量的時候竟然寫錯了。現在在提交應該就能通過了。

 

 

No 2.

#include<iostream>
#include<map>
#include<vector>

using namespace std;

int main() {
    int n;
    cin >> n;

    map<int, int> start;
    map<int, int> end;
    vector<int> v;

    int temp;
    for (int i = 1; i <= n; ++i) {
        cin >> temp;
        start[temp] = i;
        v.push_back(temp);
    }
    for (int i = 1; i <= n; ++i) {
        cin >> temp;
        end[temp] = i;
    }

    int ans = 0;
    int s, e;
    for (int i = 0; i < n; ++i) {
        if (end[v[i]] < start[v[i]])
            ans++;
        else {
            for (int j = 0; j < i; ++j) {
                if (end[v[i]] < end[v[j]]) {
                    ans++;
                    break;
                }
            }
        }
    }

    cout << ans << endl;

    return 0;
}

 

No 3.

#include<iostream>
#include<cmath>

using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    int t = 1;
    while (1) {
        int temp = n / pow(k, t-1);
        if (temp == 0) break;
        t++;
    }
    t--;

    double d = 1 / k;
    int x = (t * (1 - d)) / (1 - pow(d, t));

    cout << x << endl;


    return 0;
}

 

No 4.

#include<iostream>

using namespace std;

int main() {
    int n;
    cin >> n;

    int ans = 3;

    for (int i = 3; i < n; ++i) {
        ans = (ans * 3) % 1000000007;
    }
    
    ans = (ans * 2) % 1000000007;

    cout << ans << endl;

    return 0;
}

 

No 5.

#include<iostream>
#include<vector>
#include<string>

using namespace std;

int main() {
    int n, k;
    cin >> n >> k;

    vector<string> v;
    vector<string> copy;
    string temp;
    for (int i = 0; i < k; ++i) {
        cin >> temp;
        v.push_back(temp);
    }

    copy = v;

    int ans = 0;
    for (int i = 0; i < n; ++i) {
        cin >> temp;
        ans = 0;
        if (temp[0] == '?') {
            for (int j = 0; j < k; ++j) {
                string str = temp.substr(1);
                if (v[j] != "") {
                    while(str.find(v[j]) != string::npos) {
                        ans++;
                        int pos = str.find(v[j]);
                        str = str.substr(pos + v[j].length());
                    }
                }
            }
            cout << ans << endl;
        } else if (temp[0] == '+') {
            int num = stoi(temp.substr(1)) - 1;
            if (v[num] == "") v[num] = copy[num];
            cout << "v[num] = " << v[num] << endl;
        } else if (temp[0] == '-') {
            int num = stoi(temp.substr(1)) - 1;
            v[num] = "";
        }
    }

    return 0;
}

 

  通過這次筆試清楚了自己原來還是那么的菜,自己只會用C++寫着一些代碼還不夠的,還要學習一些Java的知識,因為這些知識就算在筆試中沒有考到,在面試中還是要考的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM