題目: 給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間復雜度為 O(n)。 思路: 要求的時間復雜度為O(n),則只允許一次循環。 程序: class Solution: def longestConsecutive ...
題目:給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。你的算法的時間復雜度應為O n ,並且只能使用常數級別的額外空間。 思路:第一個思路是創建一個錨點,這個錨點表示第一個正整數的出現的位置,然后再分情況來判斷,結果程序無法通過所有的測試用例,第一個思路方法以后再實現,后來使用HashMap來說實現,十分方便。 程序 :HashMap classSolution: deffirst ...
2020-04-19 17:04 0 1076 推薦指數:
題目: 給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間復雜度為 O(n)。 思路: 要求的時間復雜度為O(n),則只允許一次循環。 程序: class Solution: def longestConsecutive ...
現在可以開始寫算法了。 檢查 1 是否存在於數組中。如果沒有,則已經完成,1 即為答案。 如果 nums = [1],答案即為 2 。將負數,零,和大於 n 的數替換為 1 。遍歷數組。當讀到數字 a 時,替換第 a 個元素的符號。注意重復元素:只能改變 ...
題目: 給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。 思路:二分法,使用一個指針來找到數字的開頭和結尾位置 ...
題目:如何對n個不重復出現的整數序列進行排序,已知這些數的范圍為(0-65535),要求時間復雜度O(n),空間復雜度O(1) 分析: 可以申請一個大小為65536的數組A,數組的x下標代表數字x,A[x]代表x 在整數序列中出現的次數。掃描一遍整數序列就可以完成對該整數序列的排序,時間復雜度 ...
先討論出現次數大於n/2的數字,如果這樣的數字存在,那么這個數出現的次數大於其他數出現的次數的總和。 在數組A中,我們定義兩個數據集合a1,a2。a1為出現次數大於n/2的數的集合,a2為其余數組成的集合。對於數組 A中元素a、b,假設a不等於b,那么有兩種情況,分別為:a屬於a1,b屬於 ...
題目: 給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。進階: 如果你已經實現復雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。 思路:貪心法和分而治之 程序1:貪心發 class Solution ...
題目: 給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。 思路: 考慮數組中為負數的情況。 程序: class Solution: def ...
題目: 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。 進階: 如果你已經完成了O(n) 時間復雜度的解法, 請嘗試 O(n log n) 時間復雜度的解法 思路 ...