原创 Delete Columns to Make Sorted II

原題鏈接 使用貪心算法 class Solution { public: int minDeletionSize(vector<string>& A) { int n = A.size(),m = A[0

原创 Longest Increasing Subsequence最長增長子序列

原題鏈接 class Solution { public: int lengthOfLIS(vector<int>& nums) { int m = nums.size();

原创 c++使用數組實現雙鏈表list

List 是標準類庫中的一個類,可以簡單視之爲雙向鏈表,以線性列的方式管理物件集合。list 的特色是在集合的任何位置增加或刪除元素都很快,但是不支持隨機存取。list 是類庫提供的衆多容器(container)之一,除此之外還有

原创 c++使用棧實現括號匹配

c++使用棧實現括號匹配 給定一個表達式e,包含各種字符,如字母數字運算符標點空格和括號()[]{}等, 判斷其中括號是否匹配,如是,則返回0, 否則根據錯誤類型返回1-3: 錯誤類型包括1、2、3類型: 類型1: 左右括號不匹配

原创 Longest String Chain

原題鏈接 一般來說這種求最長序列問題都可以用動態規劃來解決,那麼這道題也不例外。核心的思路是將用一長度的字符串都壓到同一個棧中,然後從最長的字符串開始往最短的逐級計算最長序列。還有一個地方關鍵點是判斷兩個字符串是否是有效的,即字

原创 Simplify Path

原題鏈接 詳細解題思路看代碼部分,主要是棧的使用 class Solution { public: string simplifyPath(string path) { int

原创 Minimum Size Subarray Sum

原題鏈接 使用兩個變量begin和end來表示nums[begin,end]間所有元素的和,當和sum大於等於目標s時,開始收縮區間[begin,end]直到sum小於s,取得區間長度的最小值即爲答案。 class Soluti

原创 Evaluate Reverse Polish Notation

原題鏈接 這幾天都在刷stack模塊,感覺還行。 這道題與括號匹配差不多,都是屬於棧的經典例題。 遍歷整個tokens,判斷當前的元素ch是否爲操作符: 如果不是,就調用stoi函數將ch轉爲數字類型,並壓棧; 否則兩次出棧,分

原创 Minimum ASCII Delete Sum for Two Strings

原題鏈接 一道與這道題一樣的解法的題目(此處傳送門) class Solution { public: int minimumDeleteSum(string s1, string s2) { int m

原创 N對括號的所有的有效組合

所謂括號的有效組合就是整體’ (’ 和 ‘)’ 的數量相等,並且在任何位置都需要保證 ‘(’ 的數量大於等於 ‘)’ 的數量,這個就是我們算法的主要思想了。 #include<bits/stdc++.h> using namesp

原创 Course Schedule II

原題鏈接 這道題就是典型的拓撲排序問題。簡單說一下拓撲排序:對一個有向無環圖G進行拓撲排序,是將G中所有頂點排成一個線性序列,使得圖中任意一對頂點u和v,若邊(u,v)∈E(G),則u在線性序列中出現在v之前。 拓撲排序算法主要

原创 Binary Tree Postorder Traversal

原題鏈接 遞歸解法 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

原创 Edit Distance

原題鏈接 動態規劃解決,dp[i][j] 表示 word1[1,i],word2[1,j]的edit distance 狀態轉換方程爲: word1[i-1]==word2[j-1] -> dp[i][j] = dp[i-1][

原创 Delete Operation for Two Strings

原題鏈接 這道題可以說是最長公共子序列問題的翻版,套用狀態轉換方程: dp[i][j]表示子字符串word1[0,i),word2[0,j)的解 I、當word1[i-1]==word2[j-1]時,dp[i][j]=dp[i-

原创 valid-sudoku

題目鏈接 遍歷81個點,如果該點是數字則需要進行判斷是否合格,如果是’.'則跳過判斷到下一個點。 class Solution { public: bool res; bool isValidSudoku(vector