原创 leetcode 211. 添加與搜索單詞 - 數據結構設計

設計一個支持以下兩種操作的數據結構: void addWord(word) bool search(word) search(word) 可以搜索文字或正則表達式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一個

原创 leetcode 210. 課程表 II

是207課程表的變種,在207基礎上,dfs的時候將課程添加到list即可。 在dfs搜索裏面,被依賴的課程總是先加到list裏面,如果一次搜索中有課程未添加進去,說明與當前這些課程不依賴,因此後面再加進去也符合條件 publi

原创 leetcode 209. 長度最小的子數組

給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。 示例: 輸入: s = 7, nums = [2,3,1,2,4,3] 輸出:

原创 leetcode 207. 課程表

現在你總共有 n 門課需要選,記爲 0 到 n-1。 在選修某些課程之前需要一些先修課程。 例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用一個匹配來表示他們: [0,1] 給定課程總量以及它們的先決條件,判斷是否可

原创 188. Best Time to Buy and Sell Stock IV(買賣股票的最佳時機 IV)

假設你有一個數組,其中第 i 個元素是第 i 天給定股票的價格。 設計一個算法來找到最大的利潤。您最多可以完成 k 筆交易。 注意: 你不可以同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 這道題不像前面的不限交易次數,

原创 Leetcode 224: Basic Calculator(基本計算器)

實現一個基本的計算器來計算一個簡單的字符串表達式。 字符串表達式可以包含左括號 ( ,右括號),加號+ ,減號 -,非負整數和空格 。 假定所給的表達式語句總是正確有效的。 例如: “1 + 1” = 2 ” 2-1 + 2 ” = 3

原创 leetcode 229. 求衆數 II(Majority Element II)

給定一個大小爲 n 的數組,找出其中所有出現超過 ⌊ n/3 ⌋ 次的元素。 你的算法應該在O(1)空間中以線性時間運行。 超過n/3的元素最多隻有兩個,因此用num1,num2記錄這兩個數,count1,count2記錄出現次數,採

原创 leetcode 297. 二叉樹的序列化與反序列化

序列化是將一個數據結構或者對象轉換爲連續的比特位的操作,進而可以將轉換後的數據存儲在一個文件或者內存中,同時也可以通過網絡傳輸到另一個計算機環境,採取相反方式重構得到原數據。 請設計一個算法來實現二叉樹的序列化與反序列化。這裏不限定你

原创 leetcode 221 Maximal Square(最大正方形)

在一個由0和1組成的二維矩陣內,尋找只包含1的最大正方形,並返回其面積。 例如,給出如下矩陣: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4. 這道題仍然是雙重循環遍歷二維數組,因爲要把

原创 leetcode 218. 天際線問題(The Skyline Problem)

首先要畫出輪廓線,其實就是畫輪廓點,而輪廓點顯示就是在建築的左上右上頂點中,問題轉化爲找符合條件的頂點。 每個沒被遮擋的高建築左頂點一定是輪廓點;高建築和矮建築交匯的地方,取的是高建築右頂點的橫座標和矮建築的高度作爲輪廓點;每一片連在

原创 leetcode230. 二叉搜索樹中第K小的元素(Kth Smallest Element in a BST)

給定一個二叉搜索樹,編寫一個函數kthSmallest來查找其中第k個最小的元素。 對於二叉搜索樹,前序遍歷就是一個有序的搜索,因此只需要在前序遍歷中記錄一下搜索次數就行了,比較容易實現 public static int num =

原创 leetcode 223. Rectangle Area(矩形面積)

在二維平面上計算出兩個由直線構成的矩形疊加覆蓋後的面積。 每個矩形由其左下頂點和右上頂點座標表示,如圖所示。 假設面積不會超出int的範圍。 求兩個矩形覆蓋的平面的面積。 思路直接看代碼就行,主要是求重合面積 public int

原创 leetcode 233. 數字1的個數(Number of Digit One)

給定一個整數 n,計算所有小於等於 n 的非負數中數字1出現的個數。 例如: 給定 n = 13, 返回 6,因爲數字1出現在下數中出現:1,10,11,12,13。 思路:從數的最高位依次計算1出現的次數,對於每整位出現的次數可事先

原创 ArrayList序列化

序列化一個對象A,對象成員有一個list B,當A new A時,如果把B new 成arrayList,則會報B必須序列化的錯誤,這是因爲arrayList的elementData 已經用transient 註解爲不序列化了,解決方法是

原创 leetcode 214. Shortest Palindrome(最短迴文串)

給一個字符串 S, 你可以通過在字符串前面添加字符將其轉換爲迴文串。找到並返回可以用這種方式轉換的最短迴文串。 例如: 給出 “aacecaaa”,返回 “aaacecaaa”。 給出 “abcd”,返回 “dcbabcd”。 因爲只