力扣88(合併有序陣列),分離指標方法

2021-10-07 12:42:37 字數 849 閱讀 2737

class solution:

def merge(self, nums1: list[int], m: int, nums2: list[int], n: int) -> none:

nums1.sort() #排序,如果列表有序就不用排

nums2.sort()

l = m-1

s = n-1 # 把指標的開始位置放在列表的最後乙個元素上

k = m+n-1 # 定義k為列表的索引,開始時在最後

while l >=0 and s >=0:

if nums1[l] >= nums2[s]: #因為合併後的列表要排序,所以在這裡取乙個大的值放在最後

nums1[k] = nums1[l] #把大的值賦給列表最後的乙個位置上

l-=1

else:

nums1[k] = nums2[s]

s-=1

k-=1 #後索引減一(移到前一位),方便下一次賦值

while l>=0: #當其中乙個列表賦值完成後,上面的while條件結束,跳到下面這兩個while,將未完全輸出的列表剩下的值繼續賦給總列表,直到兩個表的值都遍歷完成

nums1[k] = nums1[l]

l-=1

k-=1

while s>=0:

nums1[k] = nums2[s]

s-=1

k-=1

return nums1 #所有迴圈結束後,輸出總表,即為合併後的表

LeetCode88 合併有序陣列

1.這道題為簡單題目,但是還有需要好好思考的 2.首先不能使用額外陣列合併,不然就沒得後文了 3.nums1後面有0填充,且填充數量正好是n,整個陣列大小即m n能夠容納合併後的資料 4.既然要在原來的陣列上操作,有沒有可能能夠避免移動資料 降低時間複雜度?使用交換方式 從後往前思考,類似於字串空格...

雙指標問題 合併有序陣列

簡單演算法 指標概述 指標 就是程式語言中的乙個物件,它儲存這乙個記憶體空間的位址,計算機可以通過這個位址找到變數的值,也就是說,這個特定的位址指向這個值。指標的最大優點是在於它可以有效的利用零碎的記憶體空間 在python中列表 可以用來代替陣列進行解釋 指標並不是真正的指標,而是一種模擬指標,類...

陣列 合併有序陣列 雙指標

leetcode88 給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 的空間大小等於 m n,這樣它就有足夠的空間儲存來自 num...