Leetcode刷题记录——面试题 10.01. 合并排序的数组

在这里插入图片描述

考虑双指针,都从每个数组的[0]开始

class Solution:
    def merge(self, A, m, B, n):
        """
        Do not return anything, modify A in-place instead.
        """

        indexa = 0
        indexb = 0
        while indexa < len(A) and indexb < n:#当两个数组都还没到队尾时
            if B[indexb] <= A[indexa]:
            	#若B的cur <= A的cur,将A从cur起(含cur)后移一位,把B的cur放在A的cur位置上
            	#后移一位B的指针
                self.houyi(A,indexa)
                A[indexa] = B[indexb]
                indexb += 1
            else:#若B的cur > A的cur,后移一位A的指针
                indexa += 1
        
        if indexa >= len(A) and indexb < n:
        #若A已经走完,B还没见底,说明B后面还有比A全部数字都大的数字
            allstart = m + indexb
            for j in range(n-indexb):
                A[allstart+j] = B[indexb+j]
        
    def houyi(self,inputlist,startindex):#从startindex开始后移一位
        cur = len(inputlist) - 1
        while cur > startindex:
            inputlist[cur] = inputlist[cur-1]
            cur -= 1
发布了43 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/105474649