您的位置:首页 > 其它

LeetCode-88合并两个有序数组

2020-03-06 21:45 197 查看

题目描述

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

示例

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]

解题思路

这道题还是双指针的思想,只不过做的同时也需要灵活一下,如果遍历时均是从开头开始遍历,那么除非开新数组否则原数组的数据可能会在未遍历时便被占据。因此此时可以从后向前遍历,这样因为nums1数组本身空间足以容纳两数组,所以不会在未遍历时便占据nums1数组。

代码如下

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int t1=m-1, t2=n-1,i=nums1Size-1;
while(1){
if(t2<0) break;
if(t1<0){
while(t2>=0){
nums1[i--] = nums2[t2--];
}
break;
}
if(nums1[t1]>nums2[t2]){
nums1[i--] = nums1[t1--];
}
else{
nums1[i--] = nums2[t2--];
}
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
doctorkkk 发布了6 篇原创文章 · 获赞 0 · 访问量 60 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: