原创 劍指offer【68】:二叉樹最近祖先節點

題目:   思路+代碼: 思路:找就近的祖先節點,採用遞歸方法,考慮3種邊界情況, 邊界情況: 1. p,q在左右兩邊 2. p,q都在左子樹或右子樹 3. p或q有一個是根節點 遞歸結束:如果not root, 找到節點爲p或q,ret

原创 論文閱讀:CTRL: A CONDITIONAL TRANSFORMER LANGUAGE MODEL FOR CONTROLLABLE GENERATION

核心思想:借鑑多任務,將文本標籤作爲輸入的一部分(放在開頭)控制文本生成。 文本生成最大的問題是難以對其進行控制,本文發佈了一個 1.6 billion 參數的條件 transformer language model,訓練能夠 gove

原创 劍指offer【68】:二叉搜索樹的最近祖先節點

題目: 思路+代碼: 思路一:非遞歸迭代            二叉樹節點值唯一,且爲二叉搜索樹            非遞歸寫法:            所以根據值大小不斷從根節點,往下一層判斷;直到p,q分佈在 子樹根節點的左右  

原创 劍指offer【59-1】:滑動窗口的最大值

題目: 思路+代碼: 思路 1. 類似拿到棧中最小值時維持一個非嚴格遞增輔助棧,這裏也是維護一個單調隊列(用的list) 滑塊移動,對滑塊最左邊i,最右邊j判值大小,因爲每次滑塊進來值索引是j+1, 出去值索引i-1; 然後保證當前滑塊

原创 劍指offer【40】:topk數,小頂堆,快排實現

題目: 思路+代碼: 思路: 法一:調用python sorted 方法            時間複雜度:因爲sorted也是使用餓快速排序實現餓,O(nlogn)            空間複雜度:額外需要空間O(logn) 法二:

原创 論文閱讀:Keywords-Guided Abstractive Sentence Summarization

這篇文章講的是把關鍵詞信息添加到摘要生成的encoder-decoder中,具體是通過一個訓練進行關鍵詞提取和摘要生成的多任務學習框架;通過雙注意和雙複製機制對指針生成網絡進行擴展,實現了輸入語句和關鍵詞的語義集成,實現輸入語句和關鍵詞的

原创 論文閱讀:Few-shot Natural Language Generation for Task-Oriented Dialog

paper:https://arxiv.org/abs/2002.12328 code/data/demo:http://scgpt.westus2.azurecontainer.io/ 目前任務導向型對話存在的問題,要麼依賴固定對話生成

原创 論文閱讀:Automatic Generation of Personalized Comment Based on User Profile

文章鏈接:https://arxiv.org/abs/1907.10371 code:https://github.com/Walleclipse/AGPC 本文作者提出一種基於用戶個性化信息來生成評論的方法;個性化信息如下:      

原创 論文閱讀:Large-Scale Transfer Learning for Natural Language Generation

遷移學習的思路是:先在大規模的未標註文本語料上無監督地預訓練一個語言模型,再把預訓練好的語言模型遷移到特定的任務上,對模型參數進行微調。目前遷移學習的大部分研究集中在文本分類和NLU(natural language understand

原创 劍指 Offer 【37】. 序列化二叉樹

題目: 思路+代碼: 思路: 1.序列化,採用層序遍歷;這裏添加null節點操作,是判斷節點是否爲空添加,所以res確實有多添加null 2.反序列化:先構建根節點,遍歷有效的節點val,每次pop一個節點就添加它的左右節點; cla

原创 劍指offer【36】:二叉搜索樹與雙向鏈表

題目: 思路+代碼: class Solution: # 思路:二叉搜索樹中序遍歷纔是遞增,又因爲要求是雙向鏈表,cur.left= self.pre; self.pre.right=cur # 特例:如果root

原创 劍指offer【34】:二叉樹和爲某一值的路徑

題目: 思路+代碼: class Solution: def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]: # 思路:

原创 劍指offer【26】:判讀B是否是A的子結構

題目: 思路+代碼: class Solution: # 思路:逆推法,要判斷B是否是A子結構就是判斷,拿B分別和A, A.left, A.right 開始比較; # 遞歸思路: # 1.遞歸結束判斷:B越

原创 劍指offer【7】:重構二叉樹,遞歸思路

思路:最終是要重構二叉樹; 1. 確定子樹的根節點:遞歸(當前子樹根在前序中的索引,left,right)每層傳入根節點在前序遍歷的索引;在中序遍歷中拿到根節點的索引,建立 當前子樹的根節點 2. 確定當前子樹的左節點:遞歸(左子樹的根節

原创 劍指offer【55】層序遍歷 後序遍歷返回二叉樹深度

題目: 思路+代碼: 層序遍歷:層序遍歷計算二叉樹層數,時間複雜度O(n),空間複雜度O(n) class Solution: def maxDepth(self, root: TreeNode) -> int: #