目录
1.合并两个有序数组
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int tail1=m-1;
int tail2=n-1;
int tail=nums1Size-1;
while(tail1>=0&&tail2>=0)
{
if(nums1[tail1]<=nums2[tail2])
{
nums1[tail]=nums2[tail2];
tail--;
tail2--;
}
else
{
nums1[tail]=nums1[tail1];
tail--;
tail1--;
}
}
while(tail2>=0)
{
nums1[tail]=nums2[tail2];
tail--;
tail2--;
}
}
2.移除数组中所有的元素val
int removeElement(int* nums, int numsSize, int val) {
int* newnum =(int*)malloc(numsSize*sizeof(int));
int k = 0;
for(int i=0;i<numsSize;i++)
{
if(nums[i]!=val)
{
newnum[k++]=nums[i];
}
}
memcpy(nums,newnum,numsSize*sizeof(int));
return k;
}
3.旋转数组
void rotate(int* nums, int numsSize, int k) {
k=k%numsSize;
int num1=numsSize-k;
int*newnum=(int*)malloc(numsSize*sizeof(int));
int i=0;
while(num1<numsSize)
{
newnum[i++]=nums[num1++];
}
num1=0;
while(i<numsSize)
{
newnum[i++]=nums[num1++];
}
memcpy(nums,newnum,numsSize*sizeof(int));
free(newnum);
}
4.消失的数字
面试题 17.04. 消失的数字 - 力扣(LeetCode)
int missingNumber(int* nums, int numsSize){
int* newnum=(int*)malloc((numsSize+1)*sizeof(int));
for(int i=0;i<numsSize+1;i++)
{
newnum[i]=i;
}
int x=0;
for(int i=0;i<numsSize;i++)
{
x^=nums[i];
}
for(int i=0;i<numsSize+1;i++)
{
x^=newnum[i];
}
return x;
}