Leetcode: Word Search

從周日開始做real time vision 做到了周二,然后周三一整天被老板壓迫工作到晚上10點半T^T

1點多終于有時間開始刷題了...[感覺面試要死了]


對于大部分的面試算法,我都是嗤之以鼻的因為并沒有什么卵用。這個題算是少數覺得比較實用的算法吧

這道題我看到的第一想法是 ?假設不考慮代碼,人是怎么判斷的。


"ABCCED" 人類會先從字母A開始行動,找整個array。 找不到這個字母的話就直接宣布說這個word找不到。

找到的話,繼續(xù)下一個字母去找, 然后重復。唯一要注意的就是,每個字母不能重復使用。人類在做這個的時候,會記住哪些字母自己已經用過了然后不會去用。由于之前做過一道題類似,使用之前的方法就是把到過的地方mark used。

但是稍微實現一點代碼后會發(fā)現,需要至少3個For loop:

第一層: 我們需要一個一個letter的走,

第二層,我們需要iterate row,

第三層 iterate col.

如果被用過的地方,我們可以把上面的char 變成一個奇怪的字符之類的。

但是發(fā)現每一個字母都要Iterate整個array發(fā)現都找不到才能判定是不是真的不存在。



after 20分鐘以后。。。我突然發(fā)現理解錯題目了。。是問sequentially adjacent。。。OMG。。。


...我簡直不敢相信這道題竟然花了我一個小時。。。。

有幾個很傻比的問題錯誤?

一個是我做的時候竟然還是iterate string.

正確思路應該是 只要第一個char 對上了以后, 馬上開始recursion,之后的活交給recursion function來做。

check() function里面的if( || || || ||) 是一個又tricky又不tricky的東西。形象一點的說法就是派上下左右4個小分隊去偵查,只要有一個小分隊成功,就代表我們找到了subproblem的解。我之前刷的題里幾乎沒有用過這么多or operation 來判斷的,所以也算一個鍛煉了。

還一個很容易犯的錯誤就是沒有會忘了char recover back。 因為recursion的過程中我們嘗試了很多可能,如果失敗的話之前試過的整個partial string都是不行的。 但是由于已經放了empty char 在那個position, 以后的recursion會誤以為那個點被用過了。所以和backtrack的思路一樣,我們需要recover back。?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容