python面試演算法題
阿新 • • 發佈:2020-07-23
1
|
def num():
|
思路:
這題涉及到了閉包延時繫結,當迴圈執行完了之後才會執行傳參,迴圈四次,每一次迴圈完 i=3 然後再和x相乘 所以結果是6,6,6,6。 如果把 [ lambda x: ix for i in range(4) ] 改成 ( lambda x: ix for i in range(4) )這樣就變成了一個生成器 自動實現迭代器協議,一邊迴圈一邊計算的機制, 這樣結果就是 0,2,4,6.
兩數之和
1
|
給定 nums = [2, 7, 11, 15], target = 9
|
思路:
這裡可以使用字典來解題,通過enumerate方法遍歷獲取資料的下標包括對應值,然後以key,value形式把該資料的下標和對應值存入字典,然後再出通過enumerate方法遍歷資料,每一次獲取資料就從字典拿出一個值,用目標值減去從字典拿出的這個值得到一個結果值,如果結果值存在字典當中,那麼返回兩個數的下標,如果為None,說明字典中沒有這個值。
實現程式碼:
1
|
def get_index_list(nums, target):
|
陣列中重複的數字
示例:
1
|
輸入:
|
思路:
這道題想到的是,使用列表中的count方法,定義一個空列表,遍歷資料然後進行判斷,如果資料值出現個數大於或等於2,說明該資料是重複的,然後把重複的篩取出來之後存入空列表,再進行返回輸出。
實現程式碼:
1
|
def get_number(nums):
|
佇列實現一個棧
思路:
使用一個佇列,實現棧的一些基本操作,棧(後進先出)的特性。
實現程式碼:
1
|
# 佇列實現一個棧 (棧:後進先出)
|
迴文數
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例1:
1
|
輸入: 121
|
示例2:
1
|
輸入: -121
|
示例3:
1
|
輸入: 10
|
思路:
這題可以使用字串 雙指標的方法 將資料轉化為字串 首先定義好第一個元素下標和最後一個元素下標,while迴圈 只要條件不滿足 一直迴圈 迴圈判斷第一個和最後一個元素是否相等 不相等返回false 相等繼續迴圈,如果迴圈條件滿足之後都相等,返回 false
實現程式碼:
1
|
def palindromic_number(x):
|
分別用生成器和迭代器生成斐波那契數列
示例:
1
|
輸出: 1 1 2 3 5 8 13
|
1
|
# 使用迭代器生成斐波那契數列
|
1
|
# 使用生成器生成斐波那契數列
|
反轉字元陣列
思路:
直接使用反轉
實現程式碼:
1
|
# 反轉字串
|