我有一個二維陣列,外部陣列的索引代表 StateID,內部陣列中的整數代表 StoreID。
StoreStateList = [[1,2],[1,2,3],[1,3,7,9],[1,8,12],[7,9,12]]
我試圖找到一個擁有其他州沒有的商店的州。例如,StoreID 為 8 的狀態 3。
我當前的實作由 4 個嵌套回圈組成,看起來效率低下。有誰知道我怎樣才能使功能更有效?
function findUniqueStore(StoreRegionList)
for state in range(len(StoreRegionList):
state_count = 0
for store in StoreStateList[state]:
// check if the store in the state occurs in any other state
for state_inner in range(len(StoreRegionList)):
for store_inner in StoreStateList[state_inner]:
if store == store_inner:
state_count = 1
if state_count == 1:?
return state
uj5u.com熱心網友回復:
您可以使用兩個 python集來存盤潛在的唯一元素和訪問過的元素。在你的兩個第一個 for 回圈中,檢查當前元素是否已經被看到,如果沒有將它添加到潛在的唯一元素中,或者如果它仍然存在則從唯一元素中洗掉它:
def findUniqueStore(StoreRegionList):
visitedNumbers = set()
uniqueNumbers = set()
for state in range(len(StoreRegionList):
for store in StoreStateList[state]:
// check if the store in the state occurs in any other state
if store not in visitedNumbers:
uniqueNumbers.add(store)
visitedNumbers.add(store)
elif store in uniqueNumbers:
uniqueNumbers.remove(store)
if len(uniqueNumbers)>0:
return next(iter(uniqueNumbers))
這給出了一個 nlog(n) 解決方案,其中 n 是元素的總數,而不是你的 n2。
編輯:我沒有意識到你沒有明確要求python解決方案,但關鍵是你可以使用每種語言標準庫中的集合,通常用平衡二叉樹實作,以支持日志中元素的插入、檢查和洗掉(n) 時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/514862.html
