合并数组:双针模型,原地实现
生活随笔
收集整理的這篇文章主要介紹了
合并数组:双针模型,原地实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
合并數組
給定兩個數組
a = [4,5,6,9,0,0,0]
b = [1,2,3]
最后輸出[1, 2, 3, 4, 5, 6, 9]
第一種實現方式雙針模型:
def sortTwoSortedArry(a,b):b_num = len(b)a_num = len(a)-b_numli = []i ,j =0,0# 雙針模型從左往右掃描,終止條件是,只要任意一個數組走完了,# 走完了沒有完的那個數組直接接上就行了while i<a_num and j <b_num:if a[i] <= b[j]:li.append(a[i])i +=1if b[j] < a[i]:li.append(b[j])j +=1# 沒走完的直接把尾巴接上去li += a[i:a_num]li += b[j:b_num] return li第二種方式原地實現:
def sortTwoSortedArry_in_place(a,b):b_num = len(b)total_num = len(a)a_num = total_num-b_num# 原地方式,就需要倒著放,這個也是比較一般的思路# 原地操作一般想法,一是,取出一個元素放在空中,留出一個空# 二是純粹通過交換來實現# 三是,哪里有空位就往哪里放,倒著放是一種思路# 指向數組a的數組i = a_num-1# 指向數組bj = b_num-1# 最終結果的指針k = total_num-1while i >=0 and j>=0:if a[i] >= b[j]:a[k] = a[i]i -=1k -=1if b[j] > a[i]:a[k] = b[j]j -=1k -=1 # 把尾巴接上 # a[:i+1] = a[:i+1]a[:j+1] = b[:j+1]運行結果
a = [4,5,6,9,0,0,0] b = [1,2,3] print(sortTwoSortedArry(a,b)) print(a) sortTwoSortedArry_in_place(a,b) print(a)runfile('D:/share/test/arry_and.py', wdir='D:/share/test') [1, 2, 3, 4, 5, 6, 9] [4, 5, 6, 9, 0, 0, 0] [1, 2, 3, 4, 5, 6, 9]總結
以上是生活随笔為你收集整理的合并数组:双针模型,原地实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kSum,实现方式,动态规划
- 下一篇: 双针模型:验证括号,特殊case处理