标签:p2 int class 3.17 ++ 数组 nums1 nums2 指针
my
比较两个数组大小,若nums2小一些,则放入num1中(先将nums1元素都往后移一位)
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int p = 0;
int q = 0;
int mm = m;
while(q < n)
{
if(nums1[p] == 0 && ((m+n-p) == (n-q)))
{
nums1[p] = nums2[q];
p++;
q++;
}
else if(nums2[q]<nums1[p])
{
for(int i = mm;i > p; i--)
{
nums1[i] = nums1[i-1];
}
nums1[p]=nums2[q];
p++;
q++;
//将元素往后移,覆盖零元素,流出元素放新的nums2中元素值小的元素
mm++gau
}
else
{
p++;
}
}
}
}
官方1
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
System.arraycopy(nums2, 0, nums1, m, n);
Arrays.sort(nums1);
}
}
2:双指针 / 从前往后
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
System.arraycopy(nums2, 0, nums1, m, n);
Arrays.sort(nums1);
}
}
3: 双指针 / 从后往前
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
// two get pointers for nums1 and nums2
int p1 = m - 1;
int p2 = n - 1;
// set pointer for nums1
int p = m + n - 1;
// while there are still elements to compare
while ((p1 >= 0) && (p2 >= 0))
// compare two elements from nums1 and nums2
// and add the largest one in nums1
nums1[p--] = (nums1[p1] < nums2[p2]) ? nums2[p2--] : nums1[p1--];
// add missing elements from nums2
System.arraycopy(nums2, 0, nums1, 0, p2 + 1);
}
}
标签:p2,int,class,3.17,++,数组,nums1,nums2,指针 来源: https://blog.csdn.net/qq_37602161/article/details/114946448
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。