力扣解題思路 847 訪問所有節點的最短路徑

2021-10-07 18:25:25 字數 634 閱讀 8990

思路:此題類似於求最小生成樹,要求返回能訪問所有結點的最短路徑,我們可以把每個點作為出發點,依次訪問與該點相連的節點,即使用bfs。->

我們需要乙個用於記錄我們是否訪問完所有節點的陣列(也需要記錄已經訪問的節點)book,那book的維度如何確定呢?首先從每個節點出發都會儲存乙個已遍歷的節點的陣列,所以book應該是乙個二維陣列,第乙個維度即為節點的數目。->

為了便於統計和更新已訪問的節點,我們使用boolean[len][1intshortestpathlength

(int

graph));

//把每個點作為起點,1<}

int step=0;

//跳數

while

(!queue.

isempty()

));//下一節點入佇列

}}

step++;}

return step;

}

這裡可能有人會問,while迴圈中return的一定是最小的step嗎??答案是當然,這就是bfs的特性,因為最先return step一定是最小step,每經歷一次大迴圈step將加一,因此第一次返回的總是最小step  。

力扣解題思路 打家劫舍

思路 題目 你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在...

力扣解題思路 素數

首先,如何判斷乙個數是否為素數呢,首先我們知道最小的素數是2,那麼我們從2開始判斷該數是否能找到被除數即可,完整 如下 public boolean isprimenum int i return true 思路 統計所有小於非負整數 n 的質數的數量。那麼這一題我們需要對每個小於n的數進行判斷一次...

力扣解題思路 區間排序問題

思路 每次遇到和區間有關的題都要思考半天區間的排序方法,是根據區間左邊排序還是根據區間右邊排序呢?另外遇到這種題目如果採取貪心演算法最後的結果會不會是最優的呢?主要是因為研究生期間我的研究方向是強化學習演算法,其中用到的貪婪演算法容易陷入區域性最優,所以每次看到適合用貪婪演算法解題的題目時總會思考貪...