Python面試--程式設計題
1 臺階問題/斐波納挈
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
Python1 | fib=lambdan:nifn<=2elsefib(n-1)+fib(n-2) |
第二種記憶方法
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 | defmemo(func): cache={} defwrap(*args): ifargs notincache: cache[args]=func(*args) returncache[args] returnwrap @memo deffib(i): ifi<2: return1 returnfib(i-1)+fib(i-2) |
第三種方法
Python1 2 3 4 5 | deffib(n): a,b=0,1 for_inxrange(n): a,b=b,a+b returnb |
2 變態臺階問題
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
Python1 | fib=lambdan:nifn<2else2*fib(n-1) |
3 矩形覆蓋
我們可以用2*1
的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1
的小矩形無重疊地覆蓋一個2*n
Python第
2*n
個矩形的覆蓋方法等於第2*(n-1)
加上第2*(n-2)
的方法。
1 | f=lambdan:1ifn<2elsef(n-1)+f(n-2) |
4 楊氏矩陣查詢
在一個m行n列二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
5 去除列表中的重複元素
用集合
Python1 | list(set(l)) |
用字典
Python1 2 3 | l1=['b','c','d','b','c','a','a'] l2={}.fromkeys(l1).keys() printl2 |
用字典並保持順序
Python1 2 3 4 | l1=['b','c','d','b','c','a','a'] l2=list(set(l1)) l2.sort(key=l1.index) printl2 |
列表推導式
Python1 2 3 | l1=['b','c','d','b','c','a','a'] l2=[] [l2.append(i)foriinl1 ifnotiinl2] |
面試官提到的,先排序然後刪除.
6 連結串列成對調換
1->2->3->4
轉換成2->1->4->3
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | classListNode: def__init__(self,x): self.val=x self.next=None classSolution: # @param a ListNode # @return a ListNode defswapPairs(self,head): ifhead!=Noneandhead.next!=None: next=head.next head.next=self.swapPairs(next.next) next.next=head returnnext returnhead |
7 建立字典的方法
1 直接建立
Python1 | dict={'name':'earth','port':'80'} |
2 工廠方法
Python1 2 3 | items=[('name','earth'),('port','80')] dict2=dict(items) dict1=dict((['name','earth'],['port','80'])) |
3 fromkeys()方法
Python1 2 3 4 | dict1={}.fromkeys(('x','y'),-1) dict={'x':-1,'y':-1} dict2={}.fromkeys(('x','y')) dict2={'x':None,'y':None} |
8 合併兩個有序列表
知乎遠端面試要求程式設計
尾遞迴
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def_recursion_merge_sort2(l1,l2,tmp): iflen(l1)==0orlen(l2)==0: tmp.extend(l1) tmp.extend(l2) returntmp else: ifl1[0]<l2[0]: tmp.append(l1[0]) dell1[0] else: tmp.append(l2[0]) dell2[0] return_recursion_merge_sort2(l1,l2,tmp) defrecursion_merge_sort2(l1,l2): return_recursion_merge_sort2(l1,l2,[]) |
迴圈演算法
Python1 2 3 4 5 6 7 8 9 10 11 12 | defloop_merge_sort(l1,l2): tmp=[] whilelen(l1)>0andlen(l2)>0: ifl1[0]<l2[0]: tmp.append(l1[0]) dell1[0] else: tmp.append(l2[0]) dell2[0] tmp.extend(l1) tmp.extend(l2) returntmp |
9 交叉連結串列求交點
去哪兒的面試,沒做出來.
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | classListNode: def__init__(self,x): self.val=x self.next=None defnode(l1,l2): length1,lenth2=0,0 # 求兩個連結串列長度 whilel1.next: l1=l1.next length1+=1 whilel2.next: l2=l2.next length2+=1 # 長的連結串列先走 iflength1>lenth2: for_inrange(length1-length2): l1=l1.next else: for_inrange(length2-length1): l2=l2.next whilel1 andl2: ifl1.next==l2.next: returnl1.next else: l1=l1.next l2=l2.next |
10 二分查詢
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
defbinarySearch(l,t):
low,high=0,len(l)-1
whilelow<high:
printlow,high
mid=(low+high)/2
ifl[mid]>t:
high=mid
elifl[mid]<t:
low=mid+1
else:
returnmid
returnlow ifl[low]==telseFalse
if__name__=='__main__':
l=[1,4,12,45,66,99,120,444]
printbinarySearch(l,12)
相關推薦Python面試--程式設計題1 臺階問題/斐波納挈 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 Python fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2) 1 python考試程式設計題3. a: while True: s = raw_input('變數名為:') if s == 'exit': print '退出' break #判斷是否由字母或下劃線組成 if s[0].isalpha( Python——面試小題1、關於斐波那契數列 什麼是斐波那契數列,斐波那契數列就是形如”0 1 1 2 3 5 8 13 21“這種數列 即某個值等於前兩個值之和,所以我們使用遞迴函式時,最主要的就是要將所求某個數的前兩個值之和加起來。 #關於斐波那契數列的第一種使用遞迴的用法 def Python 入門程式設計題(二)Python 入門程式設計題:11-20 本系列部落格都是一些比較簡單的題目,適合新手,因為我就是新手~非常歡迎大家一起討論,讓我們一起進步! 11、題目:兩個 3 行 3 列的矩陣,實現其對應位置的資料相加,並返回一個新矩陣: X = [[12,7,3], [4,5 Python 入門程式設計題(二)答案Python 入門程式設計題:11~20(答案) 提示:最好還是先思考,先編寫,再看答案哦 ^_^ 11. X = [[12,7,3], [4,5,6], [7,8,9]] Y = [[5,8,1], [6,7,3], [4,5,9]] resul Python 入門程式設計題(一)答案Python 入門程式設計題:1~10(答案) 提示:最好還是先思考,先編寫,再看答案哦 ^_^ 1. for i in range(1, 5): for j in range(1,5): for k in range(1, 5): if i != j and j!= k Python 入門程式設計題(一)Python 入門程式設計題:1~10 本系列部落格都是一些比較簡單的題目,適合新手,因為我就是新手~非常歡迎大家一起討論,讓我們一起進步! 1、題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少? 程式分析:可填在百位、十位、個位的數字都是 Python 入門程式設計題(三)答案Python 入門程式設計題:21~30(答案) 提示:最好還是先思考,先編寫,再看答案哦 ^_^ 21. import os.path import shutil def create_filefolder(folder_name): if not os.path.exi Python 入門程式設計題(三)Python 入門程式設計題:21~30 本系列部落格都是一些比較簡單的題目,適合新手,因為我就是新手~非常歡迎大家一起討論,讓我們一起進步! 21、現在有一個資料夾Filetest,資料夾中有大量的圖片 圖片的名稱是這樣的12345-1.jpg、23456-1.jpg、1234 《面試程式設計題真題合集(二)——招商銀行2019校園招聘真題題解》題目描述: 給出一個正整數n,請給出所有的包含n個‘(’和n個‘)’的字串,使得’(‘he’)’可以完全匹配。 例如: ‘(())()’,’()()()’都是合法的;’())()(‘是不合 java面試程式設計題(二叉樹相關)題目: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 二叉樹結構為 面試程式設計題拾遺(06) --- 列印n對括號的全部有效組合如題所述,當n=3時,可能的組合有:(()()), ((())), ()(()), (())(), ()()() 程式碼如下(有註釋): import java.util.ArrayList; im 面試程式設計題5:實現字串翻轉並輸出繼續來看一個字串操作的程式設計面試題。題目是給定一個字串,實現翻轉並輸出,例如“abcd”,翻轉後效果變成“dcba”。 分析: 如果題目沒有限制不能使用Java JDK自 Python基本程式設計題問題1:僅使用 Python 基本語法,即不使用任何模組,編寫 Python 程式計算下列數學表示式的結果並輸出,小數點後保留3位。 a= 《面試程式設計題真題合集(三)——華為2019校園招聘真題題解》面試題一:獲取最長對稱串的長度題目描述:輸入一個字串,輸出該字串中對稱的子字串的最大長度,比如輸入字串“12213”,由於該字串裡最長的對稱子字串是“1221”,因此輸出為4.輸入描述:連續的字串,字串長度不超過64,只包含數字和字母輸出描述:最長的對稱字串長度示例1:輸入1 2.前端常見面試程式設計題整理1.輸出字串中出現次數最多的 var str='fdadffddfdffj'; var obj={}; for(var i=0;i<str.length;i++){ var cha=str.charAt(i);if(!obj.hasOwnProperty( 面試程式設計題1:給定一個字串,統計出每個字母出現次數不管是自動化測試,還是測試開發,或者高階測試工程師,國內很多公司都開始要求編碼能力。在各種面試中,經常會問到一些程式設計如何實現的問題。本系列,專門記錄一些面試中遇到的問題,主要是用Ja 機器學習面試程式設計題彙總阿里2017年3月線上程式設計題 package yuyin.chuli; import java.math.BigDecimal; import java.util.Scanner; public class Main { /** 請完 常見的C語言面試程式設計題(一)最近一直忙著找實習單位,空閒之餘,複習了一下c語言和資料結構,寫了幾段小程式,也有同學面試過程中碰到的一些程式設計問題: (1) 求n的階乘,這是一個比較簡單的題目,有很多方法,但用遞迴方法是最簡單的了: #include <stdlib.h>#inclu 2018今日頭條演算法面試程式設計題2給定一個數組序列, 需要求選出一個區間, 使得該區間是所有區間中經過如下計算的值最大的一個:區間中的最小數 * 區間所有數的和最後程式輸出經過計算後的最大值即可,不需要輸出具體的區間。如給定序列 [6 2 1]則根據上述公式, 可得到所有可以選定各個區間的計算值:[6] = |