7 kyu, Lost Lineup
這題很簡單,我一開始實作的方法是:
local function find_lineup(distances)
local a, d = {}, #distances
for i = 1, d do
a[i] = -1
end
for i = 1, d do
local n = distances[i] + 1
if -1 == a[n] then
a[n] = i
else
return {}
end
end
for i = 1, d do
if -1 == a[i] then
return {}
end
end
return a
end
return find_lineup很來看了別人的方法,
主要有兩點,會比我簡潔:
1. 利用a = {}時,空的table, 裡面的元素預設值是nil
例如 a[2] = nil
2. 利用排隊正常時,會排完,且每個人只佔住一個號碼,
因此排隊號碼,不可能大於總人數。
由以上兩點,我改寫如下:
local function find_lineup(distances)
local a, d = {}, #distances
for i = 1, d do
local n = distances[i] + 1
if nil == a[n] and n <= d then
a[n] = i
else
return {}
end
end
return a
end
return find_lineup
沒有留言:
張貼留言