“我開始了250天的DSA挑戰,今天是第107天。”
有人在社交平臺上這樣寫,配圖是力扣第17題的代碼截圖,45ms的運行時間。看起來一切都在按計劃推進,數字在增長,題單在劃去,每天都有一次綠色的“提交成功”。
可你知道嗎,這種看似堅不可摧的秩序感,也可能是另一種自我麻痹。就像一個在錯的愛里死撐的人,每天的早安晚安準時打勾,卻從不敢問:我們之間,到底還剩下什么。
![]()
那一道題的描述格外誠實——“給定一個僅包含數字2-9的字符串,返回所有它能表示的字母組合。注意,1不映射到任何字母。”像極了成年人之間的情感信號,你拼命在2到9的區間里排列組合,試圖拼出“我愛你”的答案,卻沒人提醒你,有些數字從一開始就是空的。
以下三條,來自這道平平無奇的算法題,也來自那些年我們為錯誤的人、錯誤的事耗盡的夜晚。
第一,你以為在遍歷所有可能,其實只是在重復同一個死胡同。
回溯算法的核心框架,是站在某個節點,老老實實進入下一層,走到底再回頭。整個函數就那么幾行:一個空列表盛放結果,一個字典存放數字與字母的對應關系,然后遞歸。第107天的解法是這樣,第1天的解法也是這樣,區別只是映射表不同。很多人的感情也這樣,嘴上說著“再試一次”,實際上不過是換個號碼,重新撥一遍早就關機的號段。你以為在主動探尋,其實只是被動地耗盡所有組合。
那道題的約束條件清清楚楚——字符串長度不超過4。可你偏不信,總覺得只要遞歸更深一點,就能撞見一個不在字典里的溫柔。于是你把自己的耐心、自尊、眼淚反復傳入函數,直到棧溢出。
第二,別人的最優解,和你無關。
同一道題,有人跑出了0ms的神級代碼,被貼上“超過99.78%”的標簽。而你搓了半天的遞歸,最后定格在45ms,只配得到一句“通過”。感情里也有這種殘酷對比:你熬夜想話題,他秒回“嗯”;你周末做便當,他拍照發了朋友圈,但沒拍你。別人的親密關系像0ms的內置函數,你的付出卻總是慢半拍,還被系統判為“可以接受,但不夠好”。
更扎心的是,你總盯著那些最優解自我折磨——“同樣一個擁抱,為什么他給不出那樣的溫度?”可算法告訴你,不同的寫法只是通向同一結果的不同路徑罷了。問題的答案集只有一個,按任意順序返回都算正確。既然你的答案里終究沒有他給出的那個組合,又何必反復嫉妒別人的運行時間。
第三,你害怕遇到“空字符串”。
幾乎每個解題者在開頭都加了一句:if digits為空,直接返回空列表。這行代碼簡單到不起眼,但意味著你連一次遞歸的機會都沒有。一段關系里最可怕的不是爭吵,不是冷戰,而是一個人已經關機,另一個卻還在等那個永遠不會到來的base case。“你是個好人,但我們不合適”,這句話就是在告訴你:當前輸入是一個空串,請你立刻終止程序,不要打印任何結果。可你不甘心,固執地在空集上運行全套回溯,搞得系統警告超時,搞得自己遍體鱗傷。
你害怕面對真相,寧愿相信是自己算法沒寫好,而不是從一開始就沒有數字。
第107天,45ms。第108天,還會是另一道題,另一個數字。這場250天的挑戰像一個隔絕情緒的沙箱,讓你可以假裝人生仍有可控的部分。可算法終歸是算法,它不會在你深夜崩潰時替你說句“我在”。
你需要的不是一個綠色通過標志,而是放下手機,關掉代碼編輯器,承認有些排列組合窮舉到底也毫無意義,承認遞歸寫得再漂亮也改變不了空輸入的事實。
別再用“堅持”包裝“逃避”,別把這場看起來勵志的打卡,變成你不敢面對失控人生的唯一出口。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.