原创 63. 不同路徑 II(C++)---動態規劃解題(並進行滾動數組思想優化)

題目詳情 一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。 現在考慮網格中有障礙物。那麼從左上角到

原创 44. 通配符匹配(C++)---雙指針貪心解題

題目詳情 給定一個字符串 (s) 和一個字符模式 (p) ,實現一個支持 '?' 和 '*' 的通配符匹配。 '?' 可以匹配任何單個字符。 '*' 可以匹配任意字符串(包括空字符串)。 兩個字符串完全匹配纔算匹配成功。 說明: s 可能

原创 PAT (Basic Level) Practice 1044 火星數字 (20分)

火星人是以 13 進制計數的: 地球人的 0 被火星人稱爲 tret。 地球人數字 1 到 12 的火星文分別爲:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。 火星

原创 32. 最長有效括號(C++)---動態規劃解題

題目詳情 給定一個只包含 '(' 和 ')' 的字符串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串爲 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長

原创 關於 C++中 while(cin &gt&gt a) 的解釋 和 operator void*() 和 bool operator!()的理解

做題的時候,我經常用while(cin>>a)這樣的模式來  實現 連續輸入 或 統計輸入連續數字的個數 等功能,但是一直都對其中的原理感到迷迷糊糊,我覺得只會用怎麼行,還得搞明白 其所以然 來。所以看了一些資料和大佬們的博客,然後寫這樣

原创 1041 考試座位號 (15分)---C++解題

題目詳情 每個 PAT 考生在參加考試時都會被分配兩個座位號,一個是試機座位,一個是考試座位。正常情況下,考生在入場時先得到試機座位號碼,入座進入試機狀態後,系統會顯示該考生的考試座位號碼,考試時考生需要換到考試座位就座。但有些考生遲到了

原创 1042 字符統計 (20分)---C++解題

題目詳情 請編寫程序,找出一段給定文字中出現最頻繁的那個英文字母。 輸入格式: 輸入在一行中給出一個長度不超過 1000 的字符串。字符串由 ASCII 碼錶中任意可見字符及空格組成,至少包含 1 個英文字母,以回車結束(回車不算在內)。

原创 108. 將有序數組轉換爲二叉搜索樹(C++)---深度優先搜索解題

題目詳情 將一個按照升序排列的有序數組,轉換爲一棵高度平衡二叉搜索樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。   示例: 給定有序數組: [-10,-3,0,5,9], 一個可能的答

原创 378. 有序矩陣中第K小的元素(C++)---基於堆排序的方法 / 二分法 解題

題目詳情 給定一個 n x n 矩陣,其中每行和每列元素均按升序排序,找到矩陣中第 k 小的元素。 請注意,它是排序後的第 k 小元素,而不是第 k 個不同的元素。   示例: matrix = [    [ 1,  5,  9],  

原创 1035 插入與歸併(C++)

題目詳情 1035 插入與歸併 (25分) 根據維基百科的定義: 插入排序是迭代算法,逐一獲得輸入數據,逐步產生有序的輸出序列。每步迭代中,算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。 歸併排序進行

原创 劍指 Offer 09. 用兩個棧實現隊列(C++)

題目詳情 用兩個棧實現一個隊列。隊列的聲明如下,請實現它的兩個函數 appendTail 和 deleteHead ,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素,deleteHead 操作返回 -1 )  

原创 41. 缺失的第一個正數(C++)---哈希表解題

題目詳情 給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。   示例 1: 輸入: [1,2,0] 輸出: 3 示例 2: 輸入: [3,4,-1,1] 輸出: 2 示例 3: 輸入: [7,8,9,11,12] 輸出: 1

原创 215. 數組中的第K個最大元素(C++)---基於快排的方法 / 基於堆排序的方法(包含優先隊列的使用總結)

在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1:輸入: [3,2,1,5,6,4] 和 k = 2輸出: 5 示例 2: 輸入: [3,2,3,1,2

原创 718. 最長重複子數組(C++)---動態規劃解題

題目詳情 給兩個整數數組 A 和 B ,返回兩個數組中公共的、長度最長的子數組的長度。 示例 1: 輸入: A: [1,2,3,2,1] B: [3,2,1,4,7]輸出: 3解釋:  長度最長的公共子數組是 [3, 2, 1]。 說明:

原创 1037 在霍格沃茨找零錢(C++)

題目詳情 如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給定哈利應付的價錢 P 和他實付