题解 | #合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

合并两个有序的数组,而且重点是合并完了之后也必须要有序的
那么拆分一下整个题目的要求
是不是把两个数组放一起,然后再排序一下就行了呢?
排序的算法很多对吧,也可以直接sort这里就不赘述了
但是有没有更方便的呢?
当然有啦,既然数组的值我都已经知道了,并且按顺序排好了,直接在循环里跑的时候
把小的放前面,大的继续比,然后两个指针一直这样跑完不就行啦?
具体看代码吧~
class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
      int end = m+n-1, i = m-1,j = n-1; //初始化 end,i,j
      while(end!=0 && i>=0 && j>=0){
         if(A[i]>B[j]) A[end--] = A[i--];  //从尾部开始
         else A[end--] = B[j--];
      }
     while(j>=0) A[end--] = B[j--]; // i《0,复制B
     }
};


全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务