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

本章概述

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

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

相关推荐
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2025.11.24 题目:1018. 可被5整除的二进制前缀
笔记·算法·leetcode
gfdhy7 小时前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
百***06018 小时前
SpringMVC 请求参数接收
前端·javascript·算法
weixin_457760008 小时前
Python 数据结构
数据结构·windows·python
一个不知名程序员www9 小时前
算法学习入门---vector(C++)
c++·算法
云飞云共享云桌面9 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
明洞日记9 小时前
【数据结构手册002】动态数组vector - 连续内存的艺术与科学
开发语言·数据结构·c++
福尔摩斯张9 小时前
《C 语言指针从入门到精通:全面笔记 + 实战习题深度解析》(超详细)
linux·运维·服务器·c语言·开发语言·c++·算法
fashion 道格9 小时前
数据结构实战:深入理解队列的链式结构与实现
c语言·数据结构
橘颂TA9 小时前
【剑斩OFFER】算法的暴力美学——两整数之和
算法·leetcode·职场和发展