原创 leetcode 205. 同構字符串 簡單 字符串

題目: 分析:同構的意思是字符串結構相等,而字母不必相等,那麼只要逐個字符判斷上次出現的位置在兩個字符串中是否相等即可 代碼: class Solution { public boolean isIsomorphic(S

原创 算法 子串類問題總結 Java實現

1.公共子串可不連續 1.最長公共子序列,可看這道題目,使用動態規劃的做法 2.判斷一個字符串是否是另一個的子序列 static boolean isSubString(String s, String t){ i

原创 leetcode 524. 通過刪除字母匹配到字典裏最長單詞 中等 字符串

題目 分析:注意題目條件,首先滿足長度最長的字符串,其次要字典順序最小也就是涉及到了字符串的大小比較(長度相同下就要比較字典順序,這個字典順序不是題目給的那個“字典”,而是ASCII碼順序)。 可以通過刪除給定字符串的某些字符來

原创 首尾指針法簡單小結

以一道題目的優化過程來淺顯的說一說首尾指針法 這是一道leetcode的題目 我之前的博客記錄過 博客中我的做法就是比較常規的記錄每個位置的左右最大值 1.第一種優化 只用一個數組記錄每個位置右邊最大值,不記錄左邊最大值,左邊最

原创 算法 單鏈表刪除重複元素

1.刪除重複的元素,保留一個 leetcode題目 代碼: /** * Definition for singly-linked list. * public class ListNode { * int val;

原创 leetcode 96. 不同的二叉搜索樹 中等 動態規劃

題目: 分析:考慮使用動態規劃的做法,1-n作爲結點的二叉搜索樹。 先總結二叉搜索樹的特點,搜索樹按照節點大小將節點分到左或右子樹相應位置並且左子樹小於右子樹 對題目的思考:二叉搜索樹有多少種這種文法有點類似排列組合問題,有多少

原创 leetcode 738. 單調遞增的數字 中等 貪心

題目: 分析:如何找到一個小於或等於N的最大整數,並且各個位數上的數字時單調遞增的。很容易想到的一個思路是後部分用盡量多的9,前一部分數值最大,這樣拼在一起就可以得到一個小於或等於N的最大整數 剩下的問題就是如何找到9的開始位置

原创 leetcode 240. 搜索二維矩陣 II 中等 矩陣

題目: 分析:條件每行從左到右有序和每列從上到下有序很關鍵,怎麼高效的搜索出來呢? 一個很巧妙的想法,可以從兩個底角出發(左下角或右下腳),這裏以左下角爲例,因爲是有序的,所有每一行右邊的數比當前位置大,每一列上面的數比當前位置

原创 算法 回溯求排列組合,子集問題的總結

leetcode上有許多用回溯求排列組合,子集的題目 leetcode46 leetcode47 我的思路可看這裏 leetcode77 我的思路可看這裏 leetcode39 leetcode40 leetcode216 le

原创 leetcode 650. 只有兩個鍵的鍵盤 中等 動態規劃

題目: 分析:這個題目做法上不太好理解,總體分爲這個數是質數還是不是質數,如果是質數,那麼只能一個一個字符複製不然不可能恰好n個A; 如果不是質數,那麼可以進行乘法因子拆分減少粘貼複製次數 代碼: class Solution

原创 leetcode 90. 子集 II 中等 回溯

題目: 分析:題目要求出所有可能的集合,首先不要被這個條件嚇到,和用回溯求排列的模型都是一樣的只不過需要修改一些細節而已(回溯求全排列可看這裏) 求出所有子集主需要把大小傳進去即可,和一般回溯求法沒什麼太大不同 需要注意的點,觀

原创 leetcode 47. 全排列 II 中等 回溯

題目: 分析:題目進行了改進,多了一個條件,原序列可能包含重複的數字,這個時候再來求所有不重複的全排列。與原序列回溯相比,必定會多一個判定條件用於剪枝,而且這個判定條件一定是用於判定是否重複的,如何思考呢。 先回想一下這個回溯法

原创 leetcode 77. 組合 中等 回溯

題目: 分析:日常生活也會遇到的問題,數的思路是確定第一個數->考慮後面的所有組合情況,然後第一個數換一個->考慮後面的所有組合情況。接下來思考一個問題,是不是每個數都有機會做第一個數,答案是不一定,取決於每個組合中的個數是多少

原创 leetcode 547. 朋友圈 中等 深度優先搜索

題目: 分析:根據題目很容易想到無向圖的深度優先搜索,其實這個朋友圈的也就是深度優先搜索問題因爲條件說了朋友具有傳遞性 代碼: class Solution { public int findCircleNum(int[

原创 leetcode 9. 迴文數 簡單 整數

題目: 分析:很容易想到轉爲字符串來判斷是否是迴文字符串,但進階要求不能轉爲字符串,接下來就思考怎麼用整數判斷是否是迴文 迴文的特點都是從中間切開,左右兩邊成鏡像,也就是後半部逆序後等於前半部。 後半部逆序怎麼做?每次把原整數的