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

本章概述

算法题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》

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

相关推荐
眼镜哥(with glasses)1 小时前
蓝桥杯 国赛2024python(b组)题目(1-3)
数据结构·算法·蓝桥杯
int型码农5 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
UFIT6 小时前
NoSQL之redis哨兵
java·前端·算法
喜欢吃燃面6 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked936 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
怀旧,6 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
积极向上的向日葵6 小时前
有效的括号题解
数据结构·算法·
GIS小天6 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
_Itachi__6 小时前
LeetCode 热题 100 74. 搜索二维矩阵
算法·leetcode·矩阵
不忘不弃6 小时前
计算矩阵A和B的乘积
线性代数·算法·矩阵