本文介绍: 如果该元素等于给定的值 val,则将该元素复制dst 指向位置,并递增这两个指针。如果该元素等于给定的值 val,则只递增 src 指针,因为你不希望复制该值。当遍历完整个数组后,dst 的值就是数组长度(不包括要删除元素)。

一、移除元素

思路三:

如果该元素不等于给定的值 val,则将该元素复制dst 指向的位置,并递增这两个指针
如果该元素等于给定的值 val,则只递增 src 指针,因为你不希望复制该值。
遍历完整个数组后,dst 的值就是新数组的长度(不包括要删除的元素)。

int removeElement(int* nums, int numsSize, int val) {
    int src = 0;
    int dst = 0;
    while(src<numsSize)
    {
        if(nums[src]!=val)
        {
            nums[dst] = nums[src];
            src++;
            dst++;
        }
        else{
            ++src;
        }
    }
    return dst;
}

二、合并两个有序数组

可以使用归并排序,从后往前比较

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
	int end1 = m - 1;
	int end2 = n - 1;
	int end = m + n - 1;
	while (end1 &gt;= 0 &amp;&amp; end2 &gt;= 0) {
		if (nums1[end1] &gt; nums2[end2])
		{
			nums1[end] = nums1[end1]; 
			--end;
			--end1;
        }
        else
		{
			nums1[end] = nums2[end2];
				--end;
				--end2;
		}
	}
	// 如果是end1没完,不需要处理,因为就是在nums1里面
	while (end2 &gt;= 0)
	{
		nums1[end] = nums2[end2];
		--end;
		--end2;
	}
}

原文地址:https://blog.csdn.net/2301_79558858/article/details/134771406

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36828.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注