奇安信-算法-筆經(jīng)
一.單選
1.對(duì)于有n個(gè)結(jié)點(diǎn)的二叉樹(shù),其高度為
答案:不確定 完全二叉樹(shù)能確定
2.下面哪種排序算法不是穩(wěn)定的()
A.歸并
B.冒泡
C.插入
D.快速排序
正確答案:D
3.嶺回歸和Lasso回歸
4.下面關(guān)于二叉排序樹(shù)的說(shuō)法錯(cuò)誤的是( )
A.在二叉排序樹(shù)中,完全二叉樹(shù)的查找效率最低
B.對(duì)二叉排序樹(shù)進(jìn)行中序遍歷,必定得到節(jié)點(diǎn)關(guān)鍵字的有序序列
C.二叉排序樹(shù)的平均查找長(zhǎng)度是O(log2(n))
D.二叉排序樹(shù)的查找效率與二叉樹(shù)的樹(shù)形有關(guān)
正確答案:A
A選項(xiàng):在所有二叉樹(shù)中,完全二叉樹(shù)的平均分支長(zhǎng)度最短(節(jié)點(diǎn)數(shù)相同的情況下),查找效率最高,描述相反,故錯(cuò)誤
B選項(xiàng):因?yàn)椤白髽?shù)<子樹(shù)根節(jié)點(diǎn)<右樹(shù)”,而中序遍歷也是左樹(shù)優(yōu)先輸出,子樹(shù)根節(jié)點(diǎn)次之,右樹(shù)最后輸出,這也正是它排序的原理,正確
C選項(xiàng):以完全二叉樹(shù)作為典型,n個(gè)節(jié)點(diǎn)的樹(shù)深度為log2(n),其他樹(shù)可以在增刪時(shí)通過(guò)左旋和右旋調(diào)整成完全二叉樹(shù),正確
D選項(xiàng):樹(shù)的形狀不同,分支的平均長(zhǎng)度也會(huì)不同,樹(shù)形能夠綜合考慮所有分支,故正確。但是要注意,除了完全二叉樹(shù)外,其他樹(shù)的深度并不能決定該樹(shù)的查找效率,因?yàn)樯疃葍H由最長(zhǎng)的分支決定,只是考慮了一條路徑,無(wú)法反映所有路徑的平均長(zhǎng)度。
二.多選
1.生成模型有哪些:
生成式模型:對(duì)x和y的聯(lián)合分布p(x,y)建模,然后通過(guò)貝葉斯公式來(lái)求得p(yi|x),然后選取使得p(yi|x)最大的yi
樸素貝葉斯
KNN
混合高斯模型 GMM
隱馬爾科夫模型 HMM
貝葉斯網(wǎng)絡(luò)
馬爾科夫隨機(jī)場(chǎng)
深度信念網(wǎng)絡(luò)DBN
LDA
判別式模型:直接對(duì)條件概率建模
線性回歸
邏輯回歸
神經(jīng)網(wǎng)絡(luò)
SVM
高斯過(guò)程
條件隨機(jī)場(chǎng)CRF
CART
2.MCMC采樣
https://www.jianshu.com/p/71762a3c3dab
3.主題模型
https://blog.csdn.net/jiayalu/article/details/100533184
LSA
pLSA
LDA
HDP
4.排序算法是穩(wěn)定的意思是關(guān)鍵碼相同的記錄排序前后相對(duì)位置不發(fā)生改變,下列哪些排序算法是穩(wěn)定的:
A.插入排序
B.基數(shù)排序
C.歸并排序
D.冒泡排序
正確答案:A B C D
5.在某神經(jīng)網(wǎng)絡(luò)的隱層輸出中,包含0.75,那么該神經(jīng)網(wǎng)絡(luò)采用的激活函數(shù)可能是()
A.sigmoid
B.tanh
C.relu
正確答案:A B C
三種的值域都包括0.75
三.編程
1.01背包
估計(jì)超時(shí)了額。
KG = int(input()) nums = int(input()) weights = [] values = [] for i in range(nums): input_wuti = list(map(int,input().strip().split())) weights.append(input_wuti[0]) values.append(input_wuti[1]) V = [[0]*(KG+1) for j in range(nums+1)] for k in range(1,nums+1): for h in range(1,KG+1): if h-weights[k-1]<0: V[k][h] = V[k-1][h] else: V[k][h]=max(V[k-1][h], V[k-1][h-weights[k-1]]+values[k-1]) print(V[nums][KG])
2.如果一個(gè)正整數(shù)能被7整除,稱(chēng)之為親7樹(shù),對(duì)于給出的一組個(gè)位數(shù),請(qǐng)找出使用所有數(shù)字排列的數(shù)中親7數(shù)的個(gè)樹(shù):
其中給出的個(gè)位數(shù)字?jǐn)?shù)組中每個(gè)都不相關(guān),即使有重復(fù)數(shù)字,如[1,1,2]排列出的數(shù)為[12,121,112,121,211,211],親7數(shù)為[112,112]共2個(gè)
輸入:個(gè)位數(shù)字?jǐn)?shù)組,數(shù)組有m個(gè)元素x1,x1,x3...xm
輸出:親7數(shù)個(gè)樹(shù)
示例:
輸入:[1,1,2]
輸出:2
AC
class Solution: def reletive_7(self , digit ): # write code here from itertools import permutations ls=[] nums=[] for k in digit: nums.append(str(k)) for i in permutations(nums): ls.append(int("".join(list(i)))) res=0 for s in ls: if s%7==0:res+=1 return res
小白一枚,有誤的地方還請(qǐng)大佬們指正