1
私はリストから最も低い一意の要素を見つけようとしています。私はO(n^2)とO(n)の解を生成することができました。しかし、私はそれらが最適化されているとは限りません。可能なO(n)解決策があれば、理解してください。 ライナーの解決策はありません。は、以下の私のコードです:Python:リストから最低一意整数を見つける
主な機能:
if __name__ =="__main__":
print uniqueMinimum([6, 2, 6, -6, 45, -6, 6])
print lowestUnique([5, 10, 6, -6, 3, -6, 16])
はO(n^2)ソリューション:
def lowestUnique(arr):
num = max(arr)
for i in range(len(arr)):
check = False
for j in range(len(arr)):
if arr[i]==arr[j] and i!=j:
check =True
if check==False:
if num > arr[i]:
num = arr[i]
return num
私は最大の使用を避けたい(配列)上記溶液中の。
O(n)のソリューション:
def uniqueMinimum(array):
d ={}
a =[]
num = max(array)
for i in range(len(array)):
k =d.get(array[i])
if k is None:
d[array[i]] = 1
a.append(array[i])
else:
d[array[i]] = k+1
if array[i] in a:
a.remove(array[i])
a.sort()
return a[0]
min()は使用できません。 –
最低の一意の番号を取得する必要があります。 minを使うと、-6が得られますが、それはユニークではありません。 –
リストをソートして、各番号を次の番号と比較することはできますか?または、それは線形解と考えられますか? –