我正在準備技術回合,在準備期間我通過 leetcode 的面試問題部分遇到了這個問題。
我的解決方案可以在其輸入 dict 中包含 3 個專案,而不是引發錯誤。
我也想知道如果這個問題真的在LC的問題部分,你認為這個問題在LC簡單,中等和困難方面的排名是什么。
問題:
Juan Hernandez 是 Shopify 商家,他擁有一家胡椒醬店,有五個地點:多倫多、溫哥華、蒙特利爾、卡爾加里和哈利法克斯。他還在網上銷售,并從他的物體店之一將他的醬汁運送到全國各地。
他賣的辣椒醬有:
Jalapeo (J) Habanero (H) Serrano (S) 每個位置的庫存計數如下所示:
城市 JHS 多倫多 5 0 0 溫哥華 10 2 6 蒙特利爾 3 5 5 卡爾加里 1 18 2 哈利法克斯 28 2 12 每次收到在線訂單時,他都需要弄清楚哪些地點可以完成該訂單。撰寫一個函式,將訂單作為輸入并輸出包含所有庫存商品的位置串列。
例子
Input : J:3. H:2 s:4
Output: Van, Mon, Hali
Input: H:7 S:1
Output: Cal
我的解決方案:
inven = {
'tor': {'j':5,'h':0,'s':0},
'van': {'j':10,'h':2,'s':6},
'mon': {'j':3,'h':5,'s':5},
'cal': {'j':1,'h':18,'s':2},
'hal': {'j':28,'h':2,'s':12},
}
order = {
'j':3,
'h':2,
's':4
}
def find_order(order):
output = []
for city in inven:
if order['j'] <= inven[city]['j'] and order['h'] <= inven[city]['h'] and order['s'] <= inven[city]['s']:
output.append(city)
return output
print(find_order(order))
抱歉,如果答案非常簡單。我對編碼和我的第一輪技術仍然有點陌生。我現在只知道python。如果它不是您的語言,指向正確方向的提示將非常有幫助。
uj5u.com熱心網友回復:
這是一種方法:
inven = {
'tor': {'j':5,'h':0,'s':0},
'van': {'j':10,'h':2,'s':6},
'mon': {'j':3,'h':5,'s':5},
'cal': {'j':1,'h':18,'s':2},
'hal': {'j':28,'h':2,'s':12},
}
order = {
'j':3,
'h':2,
's':4
}
order2 = {
'h':7,
's':1
}
def find_order(order):
return [city for city, amts in inven.items() if all(amt >= order[sauce] for sauce, amt in amts.items() if sauce in order)]
print(find_order(order))
print(find_order(order2))
輸出:
['van', 'mon', 'hal']
['cal']
解釋:
- 在串列推導中,我們構建一個串列,其中包含
city滿足條件的每個串列 - 條件是訂單中找到的所有醬汁都可以在給定城市提供,數量足以滿足訂單。
檔案的一些幫助:
all()- 串列推導
dict.items()
uj5u.com熱心網友回復:
您的解決方案看起來非常接近確定。我猜不到 3 件你的意思是不是所有型別的醬汁都出現在訂單中。要修復在這種情況下出現的錯誤,您只需檢查 dict 是否包含所有預期的鍵('j'、'h'和's'),如果其中一些鍵缺失,則將它們插入值為 0 .
def find_order(order):
if 'j' not in order:
order['j'] = 0
if 'h' not in order:
order['h'] = 0
if 's' not in order:
order['s'] = 0
output = []
for city in inven:
if order['j'] <= inven[city]['j'] and order['h'] <= inven[city]['h'] and order['s'] <= inven[city]['s']:
output.append(city)
return output
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496611.html
