今天狀態不太好,笨笨的。。只做了一道題
有四種方法,分別是
(1)以起點排序的動態規劃
整體的動態規劃:要考慮,1. 保留當前區間 j如果是以起點排序的話,最後乙個區間一定是存在的。根據貪心。所以第二個選擇可以忽略。同時,對於第乙個選項,因為是起點排序,只存在以下可能。所以存在 m>n&&dp[m]第一種情況 dp[m]=dp[m-1]+1
第二種情況 dp[m]>dp[m-1],根據貪心,與前面相交的情況,m-1要多。
第三種情況 dp[m]但是必須每個初始化為1。即保留當前的。
(2)以終點排序的動態規劃
整體的動態規劃滿足,也有三種情況
對於第二個選項,不能滿足,因為上面第三種情況,是保留前乙個,而不是保留後乙個。
對於第乙個選項,存不存在 m>n&&dp[m]所以只能優化第乙個選項
(3)以起點排序的貪心演算法
同上面起點排序的動態規劃的三種可能。複製在下面
第一種情況,保留,可保留的區間+1,
第二種情況,保留前乙個,不做操作。
第三種情況,保留後乙個,刪掉前乙個。
(4)以終點排序的貪心演算法
三種情況複製在下面
第一種情況,保留。
第二種情況,保留前乙個,
第三種情況,保留前乙個。
言而總之,動態規劃向前看,為前面留空間,貪心向後看,為後面留空間。
1. 找出山脈的峰值
2. 左邊二分
3. 右邊二分
Leetcode刷題日記2
回文數 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 ...
leetcode 刷題日記
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。採用乙個帶頭節點的指標head鏈結合併後的新指標,乙個空指標pre進行迴圈載入兩個鍊錶中的節點比較兩個鍊錶節點的值,pre指標鏈結較小值的鍊錶的節點,依次遍歷兩個鍊錶,直到乙個為空停止迴圈。複雜度分析 時間複...
leetcode 刷題日記
題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...