前言:
而今姐妹们对“java 合并两个有序数组”可能比较重视,朋友们都想要知道一些“java 合并两个有序数组”的相关文章。那么小编也在网上搜集了一些有关“java 合并两个有序数组””的相关资讯,希望小伙伴们能喜欢,看官们快快来学习一下吧!题目描述:
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]
思路:
因为数组 nums1 和 nums2 都是有序的,并且 nums1 有足够的空间,因此我们可以从数组 nums1 的下标 m + n - 1 处开始存放两个数组合并后的数据。通过对两个数组逆向遍历,然后将值比较大的元素在数组 nums1 指定的位置开始逆向存储。
Java代码:
public void merge(int[] nums1, int m, int[] nums2, int n) { int pos = m + n - 1; int nums1End = m - 1; int nums2End = n - 1; while(pos >= 0){ if(nums1End >= 0 && nums2End >= 0){ if(nums1[nums1End] < nums2[nums2End]){ nums1[pos -- ] = nums2[nums2End--]; }else{ nums1[pos -- ] = nums1[nums1End--]; } }else if(nums1End >= 0){ nums1[pos -- ] = nums1[nums1End--]; }else{ nums1[pos -- ] = nums2[nums2End--]; } } }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java 合并两个有序数组