記錄下leetcode 劍指offer面試題13

記錄下leetcode 劍指offer面試題13

是一道中等題,提交了4次才過。。。尷尬。。。

題目描述如下:

地上有一個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。一個機器人從座標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數位之和大於k的格子。例如,當k爲18時,機器人能夠進入方格 [35, 37] ,因爲3+5+3+7=18。但它不能進入方格 [35, 38],因爲3+5+3+8=19。請問該機器人能夠到達多少個格子?

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。


說下我的思路歷程(其實就是前三次錯誤的原因)



第一次思路

第一次因爲看錯了題,把k和m+n直接比較了(其實應該是和數位和比較)。我就想着能不能用數學的思路來解這個問題,原理如下。圖爲一個3*4的矩陣,可以看出,外圍的數字代表每一條線上格子的數量。其中每一條線上格子座標的和相同。利用這一點,就可以按照箭頭只遍歷做外圍的一週,只要有一個格子符合條件,那麼一整條線上的格子都符合,輕鬆算出可達的格子數量。但是問題是每個格子相加的和爲座標的數位和,這樣寫不對。

在這裏插入圖片描述



第二次思路

和第一次相同,就是把計算的方式由座標和改爲了座標的數位和,但是還是卡住了。原因是要求連續可達,這樣把符合要求但是不能連續可達的點也加進去了。

錯誤樣例

8

16

4

正確輸出爲15,但是按照第一次的思路寫出來是52。
在這裏插入圖片描述



第三次思路

想改成直接對整個矩陣遍歷,但是還是一樣的問題,沒辦法判斷是否連續可達。上面的樣例的輸出爲30。



第四次思路

改成DFS/GFS+回溯解決這個問題。因爲搜索必然是連續的,再加上搜索途中判斷該點是否符合k的條件即可。

時間複雜度O(mn),空間複雜度O(mn),因爲需要額外的一個數組判斷該點是否來過,否則會陷入死循環。



成功

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章