1. 程式人生 > >Python面試--程式設計題

Python面試--程式設計題

1 臺階問題/斐波納挈

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

Python
1 fib=lambdan:nifn<=2elsefib(n-1)+fib(n-2)

第二種記憶方法

Python
1 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)

第三種方法

Python
1 2 3 4 5 deffib(n): a,b=0,1 for_inxrange(n): a,b=b,a+b returnb

2 變態臺階問題

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

Python
1 fib=lambdan:nifn<2else2*fib(n-1)

3 矩形覆蓋

我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n

的大矩形,總共有多少種方法?

2*n個矩形的覆蓋方法等於第2*(n-1)加上第2*(n-2)的方法。

Python
1 f=lambdan:1ifn<2elsef(n-1)+f(n-2)

4 楊氏矩陣查詢

在一個m行n列二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

5 去除列表中的重複元素

用集合

Python
1 list(set(l))

用字典

Python
1 2 3 l1=['b','c','d','b','c','a','a'] l2={}.fromkeys(l1).keys() printl2

用字典並保持順序

Python
1 2 3 4 l1=['b','c','d','b','c','a','a'] l2=list(set(l1)) l2.sort(key=l1.index) printl2

列表推導式

Python
1 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.

Python
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 直接建立

Python
1 dict={'name':'earth','port':'80'}

2 工廠方法

Python
1 2 3 items=[('name','earth'),('port','80')] dict2=dict(items) dict1=dict((['name','earth'],['port','80']))

3 fromkeys()方法

Python
1 2 3 4 dict1={}.fromkeys(('x','y'),-1) dict={'x':-1,'y':-1} dict2={}.fromkeys(('x','y')) dict2={'x':None,'y':None}

8 合併兩個有序列表

知乎遠端面試要求程式設計

尾遞迴

Python
1 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,[])

迴圈演算法

Python
1 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 交叉連結串列求交點

去哪兒的面試,沒做出來.

Python
1 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 二分查詢

Python
1 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] =