文章题目来源力扣
🎈力扣(LeetCode)全球极客挚爱的技术成长平台
LeetCode官网:https://leetcode-cn.com/problem-list/e8X3pBZi/
✨目录
来源:力扣(LeetCode)
题目链接:https://leetcode.cn/problems/remove-element/
思路一不作代码实现!!!
代码实现:
int removeElement(int* nums, int numsSize, int val){
if(nums==NULL || numsSize==0)//特殊值处理
return 0;
int a[numsSize];
int i=0;
int j=0;
// 把不是val的值拷贝出来
while(i<numsSize)
{
if(nums[i]!=val)
{
a[j++]=nums[i++];
}
else
i++;
}
//覆盖拷贝回去
i=0;
while(i<j)
{
nums[i]=a[i];
i++;
}
return j;
}
int removeElement(int* nums, int numsSize, int val){
int des=0,src=0;
while(src<numsSize)
{
if(nums[src]!=val)//把非val的值覆盖val值
{
nums[des++]=nums[src++];
}
else
{
src++;
}
}
return des;
}
来源:力扣(LeetCode)
题目链接:https://leetcode.cn/problems/merge-sorted-array
实现方法: 因为它们是有序的,所以我们可以像上面的思路三一样,在原地覆盖拷贝,把其中一个重复的值删掉!
int removeDuplicates(int* nums, int numsSize){
int src=0,des=0;
while(src< numsSize)
{
if(nums[src]!=nums[des])
{
nums[++des]=nums[src++];
}
else
{
src++;
}
}
return des+1;
}
来源:力扣(LeetCode)
题目链接:https://leetcode.cn/problems/merge-sorted-array
代码实现:自行实现!
代码实现:自行实现!
但是这样的方法会分两种情况:
情况一:nums2先结束

情况二:nums1先结束

代码实现:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int end1=m-1, end2=n-1,i=m+n-1;
while( end1>=0 && end2>=0 )
{
if(nums1[end1] > nums2[end2] )
{
nums1[i--]=nums1[end1--];
}
else
{
nums1[i--]=nums2[end2--];
}
}
//num2没结束
while(end2>=0)
{
nums1[i--]=nums2[end2--];
}
}