原创 字符串類算法題---迴文串、同構字符串、迴文數、計數二進制子串

1.最長迴文串 力扣傳送門 /* * 計算一組字符集合可以組成的迴文字符串的最大長度 * */ public int longestPalindrome(String s) { if

原创 在一個有重複元素的數組中查找 key 的最左(右)位置

package leetcode; import org.testng.annotations.Test; /** * Created by fangjiejie on 2019/9/21. */ public class

原创 記阿里筆試2020.3.23慘痛經歷

一共兩個題。筆試時先通讀了兩個題的題目。因爲第二題有思路覺得簡單就先寫的第二題。結果20分鐘寫完代碼,挑了30分鐘bug,都沒搞出來,最後坑在±號上。 根據記憶上題目:給你一個迷宮,包括一個起點‘S’和一個終點‘E’,‘#’表示障

原创 阿里筆試2020.3.23 第一題

當時沒有做出來,現在寫一寫思路。 題目: 現有n個人,要從這n個人中選任意數量的人組成一隻隊伍,再在這些人中選出一名隊長,求不同的方案對10^9+7取模的結果。如果兩個方案選取的人的集合不同或選出的隊長不同,則認爲這兩個方案是不同

原创 動態規劃---股票交易問題總結

1.股票交易—需要冷卻期 /* * 題目:需要冷卻期的股票交易 * 題目描述:交易之後需要有一天的冷卻時間。 * */ public int maxProfit(int[] prices)

原创 貪心算法--常見問題總結

什麼是貪心算法? 貪婪算法(貪心算法)是指在對問題進行求解時,在每一步選擇中都採取最好或者最優(即最有利)的選擇,從而希望能夠導致結果是最好或者最優的算法。 貪婪算法所得到的結果往往不是最優的結果(有時候會是最優解),但是都是相對

原创 動態規劃---字符串編輯問題

1.編輯距離 /* * 最小編輯代價 * */ public int minCost(String str1,String str2,int ic,int dc,int rc){ if

原创 搜索---回溯

Backtracking(回溯)屬於 DFS。 普通 DFS 主要用在 可達性問題 ,這種問題只需要執行到特點的位置然後返回即可。 而 Backtracking 主要用於求解 排列組合 問題,例如有 { ‘a’,‘b’,‘c’ }

原创 並查集---冗餘連接

冗餘連接 力扣傳送門 在本問題中, 樹指的是一個連通且無環的無向圖。 輸入一個圖,該圖由一個有着N個節點 (節點值不重複1, 2, …, N) 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到N中間,這條附加的邊不屬於樹中已存

原创 排序類算法階段性總結

1.快速排序 /* * 快速排序 * 不穩定:在一個待排序隊列中,A和B相等,且A排在B的前面,而排序之後,A排在了B的後面.這個時候,我們說這種算法是不穩定的. * */ public

原创 數組、矩陣類算法題

一.移動零 力扣傳送門 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 示例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 必須在原數組上操作,不能拷

原创 枚舉、二分問題總結

枚舉算法設計步驟: 1.確定枚舉對象 2.逐一列舉可能解 3.逐一驗證可能解 例題:數組配對—枚舉 題目描述 給你一個長度爲n的數組和一個正整數k,問從數組中任選兩個數使其和是k的倍數,有多少種選法 對於數組a1=1 , a2=2

原创 簡單揹包---遞歸

題目描述 李老師正準備暑假旅行,他有一個容量爲L的行李箱和n個物品(n不超過20),每個物品都有自己的體積,物品可以放入行李箱,但行李箱中物品的總體積不能超過行李箱容量,李老師現在想知道他有多少種攜帶物品的方案(一個物品都不帶也算

原创 搜索---深度優先搜索

深度優先搜索在得到一個新節點時立即對新節點進行遍歷 從一個節點出發,使用 DFS 對一個圖進行遍歷時,能夠遍歷到的節點都是從初始節點可達的,DFS 常用來求解這種 可達性 問題。 在程序實現 DFS 時需要考慮以下問題: 棧:用棧

原创 搜索---廣度優先

廣度優先搜索一層一層地進行遍歷,每層遍歷都以上一層遍歷的結果作爲起點,遍歷一個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。 每一層遍歷的節點都與根節點距離相同。設 di 表示第 i 個節點與根節點的距離,推導