1.移除元素
图解:
int removeElement(int* nums, int numsSize, int val) {
int dst = 0;
int src = 0;
while(src<numsSize)
{
if(nums[src] == val)
{
src++;
}
else
{
nums[dst++] = nums[src++];
}
}
return dst;
}
2.删除有序数组中的重复项
图解:
int removeDuplicates(int* nums, int numsSize) {
int dst = 0,src = 1;
while(src<numsSize)
{
if(nums[src] == nums[dst])
{
src++;
}
else
{
nums[++dst] = nums[src++];
}
}
return dst+1;
}
3. 合并两个有序数组
从后往前挪动元素
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int end1 = m-1;
int end2 = n-1;
int i = m+n-1;
while(end1>=0 && end2>=0)
{
if(nums1[end1] >nums2[end2])
{
nums1[i--] = nums1[end1--];
}
else
{
nums1[i--] = nums2[end2--];
}
}
while(end2>=0)
{
nums1[i--] = nums2[end2--];
}
}