筆試 | 東方財富 2020 春季校園招聘後端開發在線筆試【Python】【C++】【字符串】【動態規劃】

東方財富 2020 春季校園招聘後端開發在線筆試【Python】【C++】【字符串】【動態規劃】

1、單選題

  • 一共有 256 個結點的二叉樹高度最小是多少:8。
  • 讀程題,選出正確的程序輸出結果。
  • 不記得了。

2、不定項選擇

  • 哪些屬於設計模式。
  • 不記得了。

3、填空題

  • 20*6 = 140 是幾進制:八。
  • 給定二叉樹的前序和中序遍歷,寫出後序遍歷。
  • 305個同窗,1-2 報數,去掉報 2 的,再 1-2 報數,如此往復,最後剩下的是原來第幾個同窗。(這題沒作出來)。
  • 不記得了。

4、編程題

問題一:字符串判斷

str1 和 str2 組合以後變成 str3,可是相對順序不能改變。python

示例:ios

輸入:abc defg adebfcg
輸出:TRUE
思路

字符串編程

直接單獨判斷是否在 str3 中。
考試的時候由於不太清楚 Python 怎麼直接把輸入的一長串字符串根據空格分割成三個字符串,因此這題並無作出來。
後來改用 C++ 寫了下,仍是有問題。因此代碼不肯定對。
Python3代碼
def JudgeString(str:str) -> bool:
    new_list = str.split(' ')
    str1 = list(new_list[0])
    # print(str1)
    str2 = list(new_list[1])
    # print(str2)
    str3 = list(new_list[2])
    # print(str3)
    m, n, length = len(str1), len(str2), len(str3)
    if m + n != length:
        print("FALSE")
        return
    for i in str1:
        if i in str3:
            str3.remove(i)
        else:
            print("FALSE")
            return
    for i in str2:
        if i in str3:
            str3.remove(i)
        else:
            print("FALSE")
            return
    print("TRUE")
    return

if __name__ == "__main__":
    # str1 = "aabcc"
    # str2 = "dbbca"
    # str3 = "aadbbcbcac"
    str = input()
    # str2 = input()
    # str3 = input()
    JudgeString(str)

問題二:股票問題

思路

動態規劃後端

參考 LeetCode 0123: https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/
如出一轍的題目,昨天剛作過,上面那道苦於 Python 的輸入格式,因此這題改用 C++ 寫了下代碼,過了。

具體分析能夠參考個人這篇博客:LeetCode | 0123. Best Time to Buy and Sell Stock III買賣股票的最佳時機 III【Python】設計模式

空間複雜度: O(1)函數

C++代碼
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;

int main(){
    int n;
    cin >> n;
    int prices[101];
    for(int i = 0; i < n; ++i){
        cin >> prices[i];
    }
    int dp_i_1_0 = 0;
    int dp_i_2_0 = 0;
    int dp_i_1_1 = -0x7fffff;
    int dp_i_2_1 = -0x7fffff;
    //int dp_i_0_0 = 0;
    //int dp_i_0_1 = 0;
    for(int i = 0; i < n; ++i){
        dp_i_2_0 = max(dp_i_2_0, dp_i_2_1 + prices[i]);
        dp_i_2_1 = max(dp_i_2_1, dp_i_1_0 - prices[i]);
        dp_i_1_0 = max(dp_i_1_0, dp_i_1_1 + prices[i]);
        dp_i_1_1 = max(dp_i_1_1, -prices[i]);
    }
    cout << dp_i_2_0;
    return 0;
}

5、感想

仍是習慣 LeetCode 這種給定函數的輸入參數及類型、輸出參數類型,只需實現函數的功能,而不需在乎輸入格式。spa

最近都是用 Python 刷的 LeetCode ,今天 C/C++ 寫起來感受生疏了不少。.net

前段時間在 拉勾 上投了幾家招 Python 的,簡歷都沒過,仍是要官網校招一個個申請容易經過啊,雖然填信息麻煩了一點。設計

比起前面幾場還沒怎麼準備筆試就參加了,結果可想而知,此次準備還行。code

LeetCode 還要繼續刷,但願早點收到 Dream Offer!

相關文章
相關標籤/搜索