热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

leetcode合并两个有序数组5

合并两个有序数组题目要求  给你两个有序整数数组nums1和nums2,要求把nums2中的整数合并到nums1中,并且使nums1也是一个有序数组。
合并两个有序数组

题目要求
  给你两个有序整数数组nums1和nums2,要求把nums2中的整数合并到nums1中,并且使nums1也是一个有序数组。
思路
  为了使空间复杂度最小,我们不能创建新的数组,我们需要直接放到nums1中,考虑到时间复杂度也要尽可能的小,我们可以将两个数组中的元素进行比较,小的放在nums1中下标小的位置,但是考虑到这样会覆盖原本在nums1中的值,我们假设nums1中的大小刚好能够放下两个数组中所有的元素,这时我们就可以从后往前进行排放,也就是说两个数组中的元素进行比较,较大的那个元素放在nums1数组的末尾,进行逆填充,直到把数组填满。
代码实现

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){int p = m + n - 1;int p1 = m - 1;int p2 = n - 1;while (p1 >= 0 && p2 >= 0){if (nums1[p1] >= nums2[p2]){nums1[p] = nums1[p1];p1--;}else{nums1[p] = nums2[p2];p2--;}p--;}if (p1 == -1){while (p2 >= 0){nums1[p] = nums2[p2];p2--;p--;}}
}


推荐阅读
author-avatar
书友36296361
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有