天天看點

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

上次,我看了Python考試,前面就是送分玩意,70分先拿了50,雖然我天天挂科,但是有尊嚴的。讓我繼續看看國外的考試是怎麼樣的

第五題

看題,看Runsen怎麼解決國外Python考試。

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第一題,就是代入法,送分

len一開始是5,然後m等于2,取整除,這樣就是 c+ab+de

然後再将ab,de運作一次

ab:2整除是1,得到b,a ,

de:2整除是1,得到e,d ,

答案就是cbaed

我不信,就寫代碼測試一下

'''
@Author:Runsen
@微信公衆号: 潤森筆記
@部落格:https://blog.csdn.net/weixin_44510615
@Date: 2020/5/21
'''
def fn(a):
    if len(a) <2:
        return  a
    m = len(a) //2
    print(a[m],a[:m],a[m+1:])
    return a[m] + fn(a[:m]) + fn(a[m+1:])

if __name__ == '__main__':
    print(fn('abcde'))

c ab de
b a 
e d 
cbaed
           

和想得一樣,簡單

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

繼續代入,其中lo =0,hi=4,m=2.,num[2] = 15,這樣就是[1, 2, 15, 4, 5]

fn([1,2,15,4,5],0,1)  ,繼續代入m=0,s=3,num[0] =3,就是[3, 2, 15, 4, 5]

# 錯誤的想法
這是這是把本身的fn運作,在fn還有兩個fn。繼續代入,fn([3,2,15,4,5],0,0),其中m=2.,num[0] = 3,無變化。fn([3,2,15,4,5],1,5),其中m=3,num[0] = 3



這樣就是[1, 2, 15, 4, 5]


           

我終于知道了,這裡考的是函數的嵌套

這題,我真的不會,一個函數再調用兩次,直接列印看看,結果是[3, 2, 15, 9, 5],此題不會,

'''
@Author:Runsen
@微信公衆号: 潤森筆記
@部落格:https://blog.csdn.net/weixin_44510615
@Date: 2020/5/21
'''

def fn(nums,lo,hi):
    if hi < lo:
        return
    m = (lo +hi )//2
    s = 0
    for i in range(lo,hi+1):
        s += nums[i]
    nums[m] = s
    print(nums,lo,m)
    fn(nums,lo , m-1)
    print(nums)
    fn(nums,m+1 , hi)

if __name__ == '__main__':
    test = [1, 2, 3, 4, 5]
    fn(test, 0, len(test)-1)
    print(test)




[1, 2, 15, 4, 5] 0 2
[3

, 2, 15, 4, 5] 0 0
[3, 2, 15, 4, 5]
[3, 2, 15, 4, 5] 1 1
[3, 2, 15, 4, 5]
[3, 2, 15, 4, 5]
[3, 2, 15, 9, 5] 3 3
[3, 2, 15, 9, 5]
[3, 2, 15, 9, 5] 4 4
[3, 2, 15, 9, 5]
[3, 2, 15, 9, 5]

           
四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)
四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

runsen一開始看這題就是蒙的,然後發現了規律

這裡還要求遞歸計算,不能超過四行代碼,簡單搞定

'''
@Author:Runsen
@微信公衆号: 潤森筆記
@部落格:https://blog.csdn.net/weixin_44510615
@Date: 2020/5/22
'''

def tulip(n):
    if n == 0:
        return 1
    else:
        return tulip(n-1) + 3**n

def main():
    n = int(input('Enter a value for n:'))
    for i in range(n+1):
        print(tulip(i))
main()

Enter a value for n:5
1
4
13
40
121
364
           

第六題

第一題

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第一題。問當代碼在上面顯示的連結清單上執行時,會列印什麼?

小白先看這個

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

count=0,ptr  20 count=1,ptr  30

然後2跳出循環,答案到30,也是就10,20,30],送分

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第二題,這就是,答案[14,18,12,13]。解答沒有

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第三題,我的結果是[5,4,9,4]

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

考連結清單的時間複雜度,連結清單中的元素都會兩個屬性,一個是元素的值,另一個是指針,此指針标記了下一個元素的位址,每一個資料都會儲存下一個資料的記憶體的位址,通過此位址可以找到下一個資料,任意位置插入元素和删除元素效率較高,時間複雜度為O(1)。随機通路效率低,時間複雜度為0(N)

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

我的答案

第一個尾節點加入節點的時間複雜度

第二個确定連結清單長度的時間複雜度

第三個将連結清單中的前10個值相加的時間複雜度為

第四個對于已排序的連結清單,搜尋不在清單中的值的時間複雜性為

第七題

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第一題顯示清單值在下面的樹中的位置,以形成二叉搜尋樹。假設節點是按照在原始清單中的出現順序插入的,從44開始,然後是60,然後是62,依此類推。

取中間作根節點,下圖就我的答案

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)
四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第二題。指出樹是否表示二叉搜尋樹(BST),如果樹不是二叉搜尋樹,為什麼

二叉搜尋樹:任意節點的鍵值一定大于其左子樹中的每一個節點的鍵值,并小于其右子樹中的每一個節點的鍵值。

看我的二叉樹

二叉樹(上)

第一個不是,這裡錯了

四十六、和我一起看看,國外的Python考試到底是怎麼樣(下篇)

第二個是