【数据结构】顺序表习题之移除元素和合并两个有效数组

👑个人主页:啊Q闻

🎇收录专栏:《数据结构》

🎉道阻且长,行则将至

前言

嗨呀,今天的博客是关于顺序表的两道题目,是力扣的移除元素和合并有序数组的题目。

一.移除元素

题目为:

思路:

我们采用双指针的方法:

1.定义两个变量:src和dst.将src和dst都指向开始第一个元素

  1. 如果src指向的值等于要移除的元素val,我们就让src++.

3.如果src指向的值不等于要移除的元素val时,我们就将src指向的值赋给dst,然后让src++,dst++.

4.最后返回dst.

如图所示:

代码实现:

cpp 复制代码
int removeElement(int* nums, int numsSize, int val) {
    int src=0;//定义两个变量
    int dst=0;
    while(src<numsSize)//遍历寻找val
    {
        if(nums[src]==val)
        {
            src++;
        }
        else
        {
            nums[dst]=nums[src];
            src++;
            dst++;
        }
    }
    return dst;
}

2.合并两个有序数组

题目为:

思路:

也有些类似于双指针,特别注意的是,题目要求我们合并后的数组由nums1返回。

代码如下:

cpp 复制代码
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)//两者都存在时比较,将小的值赋给l3
    {
        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--;
    }
}

感谢阅读,如果对你有帮助的话,三连支持一下吧😘

相关推荐
雨落在了我的手上2 分钟前
Java数据结构(十一):优先级队列(堆)
数据结构
带多刺的玫瑰5 小时前
Leecode#26刷题之删除有序数组中的重复项
数据结构·算法·leetcode
洋不写bug7 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
化雨成烟7 小时前
C++之AVL树
数据结构
wabs6668 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
C++ 老炮儿的技术栈8 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
不会就选b9 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
青山木9 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
神明不懂浪漫10 小时前
【第四章】索引——B+树、回表,加快数据库的查找能力的利器
开发语言·数据结构·数据库·经验分享·笔记·b树
LuminousCPP11 小时前
数据结构 - 排序(二):快速排序从错误初版到优化版|双指针划分 + 三数取中 + 小区间插入优化
c语言·数据结构·笔记·算法·排序算法