顺序表算法题【不一样的解法!】

本章概述

算法题1

力扣:移除元素

我们先来看这个题目的要求描述:

把与val相同数值的元素移除掉,忽略元素的相对位置变化,然后返回剩下与val值不同的元素个数。来看下它给的例子描述:

  • 题解:我们可以运用顺序表删除指定数据的思路来进行解题,我们可以定义双变量,用这两个变量去遍历数组元素,然后通过移动数组元素来移除指定元素。逻辑图展示:
  • 进行代码展示:
javascript 复制代码
int removeElement(int* nums, int numsSize, int val) {
    int src = 0;
    int dst = 0;
    while (src < numsSize) {
        if (nums[src] == val)
            src++;
        else {
            nums[dst] = nums[src];
            src++;
            dst++;
        }
    }
    return dst;
}

结果运行图:

算法题2

力扣:删除有序数组中的重复项

我们来看下这个题目的描述:

这个数组不是严格意义上的递增数组,要求把重复的元素给删掉,而且各个元素的相对位置不变化,最后返回不重复的元素个数。来看一下它给的例子:

  • 题解:大体的思路和上一个算法题类似,也是需要两个变量进行遍历数组。在这里直接给大家展示代码:
javascript 复制代码
int removeDuplicates(int* nums, int numsSize) {
    int src = 0;
    int dst = 0;
    while (src < numsSize) {
        if (nums[dst] == nums[src])
            src++;
        else {
            dst++;
            nums[dst] = nums[src];
            src++;
        }
    }
    return dst + 1;
}

结果运行图:

算法题3

力扣:合并两个有序数组

我们来看一下题目的描述:

  • 题解:nums1数组的有效数据个数为m个,nums2数组的有效数据个数为n个。我们要把ums2的元素插入nums1数组里面,那么nums1的数组大小要为m+n,才能保证能插入进去(题目描述的nums2大小为m+n),而且插进去后,还要是增序的顺序。来看题目举得例子:

    • 方法1:我们先把nums2插入nums1里面,然后用冒泡排序进行nums1内部排序。
    • 方法2:我们直接进行两个数组里面的元素大小比较,把大的元素放在nums1最后面,我们需要定义3个变量,l1 ,l2 和 l3。l1和l2进行比较大小,l3是用来存放较大的元素。进行逻辑图展示:
      进行代码展示:
javascript 复制代码
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--];
        }
    }
    while(l2>=0)  //防止l1<0时,l2里面得元素还没,还没全放进nums1
    {
        nums1[l3--]=nums2[l2--];
    }
}

结果运行图:

彩蛋时刻!!!

歌曲:《Call of Silence》

每章一句:人生漫长,祝你每天都快快乐乐!感谢你能看到这里,点赞+关注+收藏+转发是对我最大的鼓励,咱们下期见!!!

相关推荐
__lost13 分钟前
C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
算法·图论·最小生成树·prim算法
wuqingshun3141591 小时前
蓝桥杯 11. 打印大X
数据结构·算法·职场和发展·蓝桥杯·深度优先
Blossom.1182 小时前
量子网络:构建未来通信的超高速“高速公路”
网络·opencv·算法·安全·机器学习·密码学·量子计算
A林玖2 小时前
【机器学习】朴素贝叶斯
人工智能·算法·机器学习
六边形战士DONK2 小时前
神经网络基础[损失函数,bp算法,梯度下降算法 ]
人工智能·神经网络·算法
wuqingshun3141593 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列
数据结构·c++·算法·职场和发展·蓝桥杯
小刘|3 小时前
JVM 自动内存管理
java·jvm·算法
小羊不会c++吗(黑客小羊)3 小时前
c++头文件知识
算法
拓端研究室TRL3 小时前
PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究
大数据·人工智能·python·算法·机器学习
长沙火山4 小时前
9.ArkUI List的介绍和使用
数据结构·windows·list