問:如何反轉鍊錶?
- 答案:反轉鍊錶涉及更改其指標的方向,以便列表從最後一個元素開始並在第一個元素結束。
- 範例:
輸入:1-> 2-> 3-> 4->無效的
輸出:4-> 3-> 2-> 1->空
問:如何對排序數組執行二分查找?
- 答案:二分查找將陣列重複分成兩半,檢查中間元素是否與目標相符。
- 範例:
輸入:陣列 [1, 3, 5, 7, 9],目標 = 7
輸出:3(索引為 7)
- 解決方法:檢查中間元素;如果是目標,則傳回索引。如果目標較小,則搜尋左半部;如果更大,則搜尋右半部。
問:如何找到字串中的第一個唯一字元?
- 答案:要找到第一個唯一字符,請計算每個字符的出現次數並找出第一個僅出現一次的字符。
- 範例:
輸入:“瑞士”
輸出:“w”
- 解決方案:使用雜湊圖儲存每個字元的出現頻率,然後迭代字串找到第一個計數為 1 的字元。
問:如何偵測鍊錶中的循環?
- 答案:要偵測鍊錶中的循環,請使用兩個指標(慢指標和快指標)。如果有循環的話,快指針最終會遇到慢指針。
- 範例:
輸入:1-> 2-> 3-> 4-> 2(循環)
輸出:True(循環存在)
- 方法:使用 Floyd 的循環偵測演算法。快指針移動兩步,慢指針移動一步。如果他們相遇,就會有一個循環。
以上是最常見的 DSA 面試問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!