日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 合并排序的数组

發布時間:2025/3/21 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 合并排序的数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

| 合并排序的數組

給定兩個排序后的數組 A 和 B,其中 A 的末端有足夠的緩沖空間容納 B。
編寫一個方法,將 B 合并入 A 并排序。

初始化 A 和 B 的元素數量分別為 m 和 n。

示例:

輸入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3

輸出: [1,2,2,3,5,6]
說明:

A.length == n + m

|兩種思路題解

# 題解一 class Solution:def merge(self, A: List[int], m: int, B: List[int], n: int) -> None:"""Do not return anything, modify A in-place instead.解題思路: 1.把數組B 追加到數組A的第m個元素的后面2.利用快速排序對數組A進行排序"""A[m:] = Bself.quick_sort(A, 0, m+n-1)def quick_sort(self, A, first, last):# 初始化p, q指針 指向首、尾元素 if first >= last:returnp = firstq = lastwhile q > p:if A[q] >= A[first]:q -= 1elif A[p] < A[first]:p += 1else:A[p], A[q] = A[q], A[p]A[p] = A[first]# 對分割左側的元素排序self.quick_sort(A, first, q-1)self.quick_sort(A, q+1, last)# 題解二 class Solution:def merge(self, A: List[int], m: int, B: List[int], n: int) -> None:"""Do not return anything, modify A in-place instead.解題思路: 逆向雙指針(比較不好理解),下面代碼有詳細注釋"""# 如果m==0 則直接返回Bif m == 0:A[m:] = Bwhile m > 0 and n > 0:# 當B數組元素大時 把當前元素之間放置A數組后面if B[n-1] > A[m-1]:A[m+n-1] = B[n-1]n -= 1 # 向前移動一個單位else:# 當A數組元素比較大的時候,把當前元素調到后面 A[m+n-1] = A[m-1] m -= 1 # 向后移動一個單位# 特殊情況處理 如果A數組元素已經對比結束,退出循環時,B數組中還有未對比的元素,則直接賦值給A元素,以索引進行切割if m == 0: A[:n] = B[:n]

總結

以上是生活随笔為你收集整理的python 合并排序的数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。