Leecode 88.合并两个有序数组

题目

在这里插入图片描述

解答

暴力解

直接将nums2替换nums1中的零,再然后将nums1使用sort()进行有序排列

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: None Do not return anything, modify nums1 in-place instead.
        """
        nums1[m:m+n] = nums2
        return nums1.sort()

双指针方法

创建两个指针p1,p2分别表示指针所在位置,比较指针所在位置元素大小,用较大指针的元素加入到列表后面,并且指针向前移动一位,另一个指针位置不变当一个指针移动到位置最前并将向前移动时,nums2一个指针及其前面全部顺序加入到列表中,指针p表示追踪元素的位置

class Solution(object):    
    def merge(self, nums1, m, nums2, n):        
        p1=m-1        
        p2=n-1        
        p=m+n-1        
        while p1>=0 and p2>=0:         
           if nums1[p1] <= nums2[p2]:            
              nums1[p]=nums2[p2]                
              p2-=1                
              p -= 1            
           else:             
              nums1[p] = nums1[p1]                
              p1 -= 1                
              p -= 1        
        nums1[:p2 + 1] = nums2[:p2 + 1]

在这里插入图片描述

发布了47 篇原创文章 · 获赞 5 · 访问量 1897

猜你喜欢

转载自blog.csdn.net/Pang_ling/article/details/104601230