@Author: Runsen
@Date:2020/5/21
上次,我看了Python考試,前面就是送分玩意,140分先拿了50,這還是不及格,雖然我天天掛科,但是有尊嚴的。跟着我學Python,Java就對了。
第五題
看題,看Runsen怎麼解決國外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
和想得一樣,簡單
繼續代入,其中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]
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
第六題
第一題
第一題。問當代碼在上面顯示的鏈表上執行時,會打印什麼?
小白先看這個
count=0,ptr 20
count=1,ptr 30
然後2跳出循環,答案到30,也是就10,20,30],送分
第二題,這就是傻逼做的,答案[14,18,12,13]。解答沒有
第三題,我的結果是[5,4,9,4]
考鏈表的時間複雜度,鏈表中的元素都會兩個屬性,一個是元素的值,另一個是指針,此指針標記了下一個元素的地址,每一個數據都會保存下一個數據的內存的地址,通過此地址可以找到下一個數據,任意位置插入元素和刪除元素效率較高,時間複雜度爲O(1)。隨機訪問效率低,時間複雜度爲0(N)
我的答案
第一個尾節點加入節點的時間複雜度
第二個確定鏈表長度的時間複雜度
第三個將鏈表中的前10個值相加的時間複雜度爲
第四個對於已排序的鏈接列表,搜索不在列表中的值的時間複雜性爲
第七題
第一題顯示列表值在下面的樹中的位置,以形成二叉搜索樹。假設節點是按照在原始列表中的出現順序插入的,從44開始,然後是60,然後是62,依此類推。
取中間作根節點,下圖就我的答案
第二題。指出樹是否表示二叉搜索樹(BST),如果樹不是二叉搜索樹,爲什麼
二叉搜索樹:任意節點的鍵值一定大於其左子樹中的每一個節點的鍵值,並小於其右子樹中的每一個節點的鍵值。
看我的二叉樹
第一個不是,這裏錯了
第二個是
第三個不是,因爲不是二叉樹