昨天陪朋友把舊衣服拿到 Goodwill San Jose 去賣,排隊的時候我們突然決定想去吃那個超級火的拉面。排隊老長了。于是打開 Yelp 在 app 上開始排隊。顯示預計需要 30 分鐘,前面還有 22 桌。排到我們大約 6:30。
沒想到在衣服店排隊特別慢,前面有個漂亮的 el amigo 小姐姐居然推了兩車來賣的衣服!時間滴答滴答滴,前面小姐姐還沒弄完,非常著急。萬一錯過拉面排隊,到 6:30 又得重排,那樣就得等到至少 7:00 才能吃上網紅拉面了。
我卻不緊不慢地獻計道:不著急,等到 6:15 的時候我用我的手機再排上。如果到 6:30 我們衣服還沒弄完,那你再繼續用你的手機重新排隊,以此類推。這樣每一個時間間隔就只有 15 分鐘,去了拉面館(就在附近)就不會等太久。
具體 sao 操作圖示如下:
兩部手機排隊的時間間隔展示。
就這樣,本來需要 30 分鐘重排的時間間隔,應用了簡單的 two-pointer technique 就立馬縮短到 15 分鐘。當然也有弊端,那就是空間復雜度上升了一倍,同時需要兩部手機排隊。具體分析如下:(1)→(2)。
最后我們在衣服店結完賬已經 6:40,我排的 6:45 那一桌也即將叫號。簡直完美。用最短的時間排到了心心念的網紅拉面。
數據結構和算法是軟件設計的重中之重
恩,拉面好好吃。而這就是傳說中的 -用空間換時間。你學會了嗎?
現在你會不會覺得如何看待軟件工程師覺得學習算法沒用?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.