当前位置:网站首页>【LeetCode】88. Merge two ordered arrays

【LeetCode】88. Merge two ordered arrays

2022-07-05 01:20:00 onlywishes


Ask for 2 The element in is added to 1 Medium and finally orderly

Their thinking :

  One 、 Put... Directly 2 The element in is added to 1 The elements in are followed by sorting

        nums1[m:]=nums2    # take 1 After the element in 0 Replace with 2 Medium element 
        nums1.sort()        # Sort the whole 

Two 、 Set two pointers , With the help of an empty list , Yes 1 and 2 Compare sizes starting with the first element , Put the small ones in the list , End of traversal 1,2 After array , Assign the ordered list to 1

        ls = []
        p1 ,p2 =0,0
        while p1 <m or p2<n :         # Merge the element comparison sizes into one 
            if p1 ==m:      #nums1 period , Just put 2 Join in 
                ls.append(nums2[p2])
                p2+=1
            elif p2==n:     #nums2 period , Just put 1 Join in 
                ls.append(nums1[p1])
                p1+=1
            elif nums1[p1] < nums2[p2]:
                ls.append(nums1[p1])
                p1+=1
            else:
                ls.append(nums2[p2])
                p2+=1
        nums1[:]=ls        # Yes nums1 Slice from scratch , hold ls Give it 

3、 ... and 、 Set two pointers , because 1 in m The back is empty , Can be assigned at will , You can go directly to 1 Add and sort elements on

take 1 and 2 Compare with the maximum value in , Is the last element comparison , Big on 1 Last position in , Every time , to update 1 Last position in , until 1 and 2 All traverse from back to front , That's the order

        p1 = m-1        #1 Middle and end elements ,
        p2 = n-1        #2 Middle and end elements 
        p = m+n-1       # Definition 1 Position of the last element in 
        while  p1>=0 or p2>=0:   
            if p1<0:
                nums1[p] = nums2[p2]    #1 There is no , Join in 2
                p2-=1
            elif p2<0:
                nums1[p] = nums1[p1]    #2 Nothing , Join in 1
                p1-=1
            elif nums1[p1]<nums2[p2]:
                nums1[p] = nums2[p2]    
                p2-=1
            else:
                nums1[p] = nums1[p1]
                p1-=1
            p-=1        # Update end position 
原网站

版权声明
本文为[onlywishes]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202141035043696.html