一、移除元素
题目描述:
int removeElement(int* nums, int numsSize, int val) {
int src=0;
int dst=0;
while(src<numsSize)
{
if(nums[src]==val)
{
src++;
}
else if (nums[src]!=val)
{
nums[dst]=nums[src];
src++;
dst++;
}
}
return dst;
}
采用双指针的方法;
二、合并两个有序数组
题目描述:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int l3=n+m-1;
int l1=m-1;
int l2=n-1;
while(l1>=0 && l2>=0)
{
if(nums1[l1]>=nums2[l2])
{
nums1[l3]=nums1[l1];
l3--;
l1--;
}
else
{
nums1[l3]=nums2[l2];
l3--;
l2--;
}
}
while(l2>=0)
{
nums1[l3]=nums2[l2];
l3--;
l2--;
}
}
谁大就把谁往后放,最终要把nums2里面的元素全部放到nums1里面,因此要在最后加上一个条件,这里l1代表的元素全部放完了,所以不需要再处理,并且nums2里面的元素肯定都比较小;只用处nums2。