刷題日記系列2

2021-10-05 14:26:45 字數 806 閱讀 1936

今天狀態不太好,笨笨的。。只做了一道題

有四種方法,分別是

(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 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...