🌈 个人主页:白子寰
🔥 分类专栏:python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分81+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~)
目录
【力扣】-- 移除元素
链接
题目要求
示例
解法
①使用for循环遍历整个数组
② 双指针法(定义两个变量)
【力扣】-- 合并两个有序数组
链接
题目要求
示例
解法
①先合并后统一排序
②从后往前比大小
【力扣】-- 移除元素
链接
移除元素https://leetcode.cn/problems/remove-element/description/
题目要求
示例
输入:nums = [3,2,2,3], val = 3 输出:2, nums = [2,2]
解法
①使用for循环遍历整个数组
int removeElement(int* nums, int numsSize, int val) {
int size = 0;
for(int i = 0; i < numsSize - 1; i++)
{
if(nums[i] != val)
{
nums[size] = nums[i];
size++;
/*也可以写成
nums[size++] = nums[i]*/
}
}
return size;
}
② 双指针法(定义两个变量)
int removeElement(int* nums, int numsSize, int val) {
int src = 0, dst = 0;
while(src < numsSize)
{
if(nums[src] != val)
{
nums[dst++] = nums[src++];
}
else
{
src++;
}
}
return dst;
}
【力扣】-- 合并两个有序数组
链接
合并两个有序数组https://leetcode.cn/problems/merge-sorted-array/description/
题目要求
示例
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] 解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
解法
①先合并后统一排序
int cmp(int* p1,int* p2)
{
return *p1 - *p2;
}
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
for(int i = 0; i < n; ++i)
{
nums1[m + i] = nums2[i];
}
qsort(nums1,nums1Size,sizeof(int),cmp);
}
②从后往前比大小
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int l1 = m - 1;
int l2 = n - 1;
int l3 = m + n - 1;
//从后往前比大小
while(l1 >= 0 && l2 >= 0)
{
//谁大谁放在后面
if(nums1[l1]>nums2[l2])
{
nums1[l3--] = nums1[l1--];
}
else
{
nums1[l3--] = nums2[l2--];
}
}
//最后要么l1<0,要么l2<0
while(l2 >= 0)
{
nums1[l3--] = nums2[l2--];
}
}
***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:“选择本身,就是向前”。
我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!!
好了划走吧。