2017-02-22 21 views
0

我正在嘗試編寫一個函數,它將一個數字作爲輸入,並以排序順序輸出未排序列表中的前一個和下一個數字。例如,如果列表是[29,1,49,8],調用函數(8)應該返回[1,29] 只有平均複雜度最小的可行解決方案是通過排序,還有其他方法,平均複雜性?該列表是隨機生成的固定大小的100爲沒有排序的未排序列表中的數字立即生成大號和小號?

+0

如果沒有小於(或大於)所請求的值,該怎麼辦?也就是說,如果你的列表是'[29,1,49,8]'而且這個調用是'function(50)'?另外,每個列表是否會有多個函數調用? –

+0

哦!我甚至沒有想過這種情況,那麼我們必須首先檢查元素是否存在,然後繼續我猜。我假設會有一個函數,但它可能會調用或可能不會在本身的功能。任何建議吉姆? –

回答

1

無需排序。 只需通過數組並保持best_delta_positive和best_delta_negative,以及在必要時找到它們的索引。

+0

如果列表是[29,22,65,8],那麼在沒有delta負數的情況下,這會起作用嗎?這個列表是隨機生成的 –

+0

太棒了!這個會在那種情況下起作用。謝謝Malcolm –