leetcode刷題日記 Array專題

2021-09-12 07:24:04 字數 1016 閱讀 3266

這個一開始自己沒想那麼多,就直接erase刪除。

**:

class solution 

}return nums.size()-shift_left;

}};

這裡就直接用陣列偏移

**:

class solution 

lastnum=nums[i];

}return nums.size()-shift_left;

}};

這裡還是用上面偏移辦法做

**:

class solution 

}else

nums[i-shift]=nums[i];

lastnum=nums[i];

}return nums.size()-shift;

}};

**:

class solution 

};

這裡用i做標記,由於陣列開頭每2個數字後第3個數字一定大於第乙個數字,所以當不大於的時候i就不跟著n進行增加並記錄著這個第3個開始重複的數字,直到大於的時候用大於的數字替換掉當初記著的第3個重複數字,後面就以此類推完成迴圈。

值得借鑑的是這樣寫法 if(i<2 || 條件) 這裡就可以避免一些i在陣列中不能取的情況,發現自己以前笨得都不會這樣來寫。

這裡最簡單方法是另開個陣列,迴圈一遍。

另外還有個o(1)方法使用逆序

a1 a2 a3 .... an 先逆序a1 ... an-k,再逆序 an-k+1 ... an,最後再全部逆序一遍就可以了

**:

class solution 

};

這裡利用下標,將每個正數交換到它應該在的對應下標上,最後迴圈一遍看第乙個不對應值的下標然後返回即可。

**:

class solution 

}for(int i=0;ireturn nums.size()+1;

}};

leetcode 刷題日記

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。採用乙個帶頭節點的指標head鏈結合併後的新指標,乙個空指標pre進行迴圈載入兩個鍊錶中的節點比較兩個鍊錶節點的值,pre指標鏈結較小值的鍊錶的節點,依次遍歷兩個鍊錶,直到乙個為空停止迴圈。複雜度分析 時間複...

leetcode 刷題日記

題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...

leetcode刷題日記

給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 輸入 arr1 2,3,1...