點個贊,看一看,好習慣!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收錄,這是我花了 3 個月總結的一線大廠 Java 面試總結,本人已拿大廠 offer。
另外,原創文章首發在我的個人博客:blog.ouyangsihai.cn,歡迎訪問。
這一篇文章來講解一下如何做leetcode回溯算法題目,這一段時間我把leetcode上面的回溯算法的題目都刷了個遍,發現了其中一些規律,所以,就想寫一篇文章來總結一下,怕以後忘記。
刷完回溯算法的題目,我發現其實可以總結爲三大類:子集問題、組合問題、排列問題,那這三大類都是什麼意思呢,我分別舉一個例子來說明。
子集問題,比如說,數組[1,2,3]
,那麼對應的子集問題就是,這個數組的子集有:[],[1],[2],[3],[1,3],[2,3],[1,2],[1,2,3]
,這就是這個數組的子集,這一類問題在leetcode上面很多個,而且有些題目數組中的元素是可以重複的,然後來求子集問題。
組合問題,比如說,數組[1,2,3]
,組合出target爲3的可能的選擇,那麼就有:[1,2],[3]
,這就是leetcode中的組合問題。
排列問題,排列問題就比較簡單了,比如,我們常見的全排列問題,leetcode也有這一類問題。
這篇文章,我們就來講講,怎麼用回溯的算法去解決這些問題。