LeetCode高频面试60天打卡日记Day03

Day03

在这里插入图片描述
Idea:
1、双指针分别指向A和B,将小的放到新建数组中,并移动指针
2、注意点,在比较大小之前应该判断两个指针是否到数组尾部,如果是,则将另一数组拷贝到新数组中,否则执行判断大小的操作,并移动指针

class Solution {
    
    
    public void merge(int[] A, int m, int[] B, int n) {
    
    
        int pa = 0;
        int pb = 0;
        int[] sorted = new int[m+n];
        int curVal = 0;
        while(pa<m || pb<n){
    
    
            if(pa==m){
    
                //注意判断其中一个是否到达尾部
                curVal = B[pb++];
            }else if(pb==n){
    
    
                curVal = A[pa++];
            }else if(A[pa]<B[pb]){
    
    
                curVal = A[pa++];
            }else{
    
    
                curVal = B[pb++];
            }
           sorted[pa+pb-1] = curVal;
        }
        for(int i=0;i<m+n;i++){
    
    
            A[i] = sorted[i];
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YoungNUAA/article/details/104666387