打開網(wǎng)易新聞 查看精彩圖片

昨天陪朋友把舊衣服拿到 Goodwill San Jose 去賣,排隊(duì)的時(shí)候我們突然決定想去吃那個(gè)超級(jí)火的拉面。排隊(duì)老長(zhǎng)了。于是打開 Yelp 在 app 上開始排隊(duì)。顯示預(yù)計(jì)需要 30 分鐘,前面還有 22 桌。排到我們大約 6:30。

沒想到在衣服店排隊(duì)特別慢,前面有個(gè)漂亮的 el amigo 小姐姐居然推了兩車來賣的衣服!時(shí)間滴答滴答滴,前面小姐姐還沒弄完,非常著急。萬一錯(cuò)過拉面排隊(duì),到 6:30 又得重排,那樣就得等到至少 7:00 才能吃上網(wǎng)紅拉面了。

我卻不緊不慢地獻(xiàn)計(jì)道:不著急,等到 6:15 的時(shí)候我用我的手機(jī)再排上。如果到 6:30 我們衣服還沒弄完,那你再繼續(xù)用你的手機(jī)重新排隊(duì),以此類推。這樣每一個(gè)時(shí)間間隔就只有 15 分鐘,去了拉面館(就在附近)就不會(huì)等太久。

具體 sao 操作圖示如下:

打開網(wǎng)易新聞 查看精彩圖片

兩部手機(jī)排隊(duì)的時(shí)間間隔展示。

就這樣,本來需要 30 分鐘重排的時(shí)間間隔,應(yīng)用了簡(jiǎn)單的 two-pointer technique 就立馬縮短到 15 分鐘。當(dāng)然也有弊端,那就是空間復(fù)雜度上升了一倍,同時(shí)需要兩部手機(jī)排隊(duì)。具體分析如下:(1)→(2)。

最后我們?cè)谝路杲Y(jié)完賬已經(jīng) 6:40,我排的 6:45 那一桌也即將叫號(hào)。簡(jiǎn)直完美。用最短的時(shí)間排到了心心念的網(wǎng)紅拉面。

打開網(wǎng)易新聞 查看精彩圖片

數(shù)據(jù)結(jié)構(gòu)和算法是軟件設(shè)計(jì)的重中之重

恩,拉面好好吃。而這就是傳說中的 -用空間換時(shí)間。你學(xué)會(huì)了嗎?

現(xiàn)在你會(huì)不會(huì)覺得如何看待軟件工程師覺得學(xué)習(xí)算法沒用?