【C语言进阶数据结构与算法】LeetCode27 && LeetCode88顺序表练习:1.移除元素 2.合并两个有序数组

🔥小龙报:个人主页

🎬作者简介:C++研发,嵌入式,机器人等方向学习者

❄️个人专栏:《C语言》《【初阶】数据结构与算法》
永远相信美好的事情即将发生

文章目录


前言

数组作为编程入门的核心数据结构,其操作逻辑是算法学习的基石。从移除指定元素到合并有序数组,每一道经典题目的背后,都是对逻辑思维和代码掌控力的锤炼。学习算法没有捷径,唯有拆解原理、敲透代码,才能在一次次练习中沉淀能力。愿你在拆解每一个数组问题时,既能夯实基础,也能看见自己的成长,始终保持对编程的热爱与执着。

一、移除元素

1.1题目

链接:移除元素

1.2 算法原理

核心思想:数组分两块

我们以之前讲解的一道数组分块的题目笔记来讲解:

只要把为0的那部分区间改为区间元素均为val即可,最后返回cur+1(cur为非val的最后一个元素)

1.3代码

csharp 复制代码
class Solution 
{
public:
    int removeElement(vector<int>& nums, int val) 
    {
        int cur = -1;
        for(int i = 0;i < nums.size();i++)
        {
            if(nums[i] != val)
                swap(nums[i],nums[++cur]);
        }
        return cur + 1;
    }
};

二、合并两个有序数组

2.1 题目

链接:合并两个有序数组

2.2 算法原理

可以创建⼀个辅助数组temp,然后用两个指针分别指向两个数组。每次拿出⼀个较小的元素放在辅助数组中,直到把所有元素全部放在辅助数组中。最后把辅助数组的结果覆盖到nums1中

2.3 代码

csharp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
    {
        int cur1 = 0,cur2 = 0,cur3 = 0;
        int temp[m + n];
        while(cur1 < m && cur2 < n)
        {
            if(nums1[cur1] >= nums2[cur2])
                temp[cur3++] = nums2[cur2++];
            else
                temp[cur3++] = nums1[cur1++];
        }
        while(cur1 < m)
            temp[cur3++] = nums1[cur1++];
        while(cur2 < n)
            temp[cur3++] = nums2[cur2++];

        for(int i = 0;i < m + n;i++)
            nums1[i] = temp[i];
    }
};

总结与每日励志

✨文章摘要 本文通过两道经典数组算法题,解析数据结构与算法的核心思想。移除元素采用数组分块策略,通过双指针交换元素实现高效去重;合并有序数组借助辅助数组和双指针遍历,完成有序数组合并。作者强调算法学习需要反复拆解原理与代码实践,在夯实基础的同时培养逻辑思维。文末以励志金句收尾,鼓励读者保持编程热情,相信持续练习终将收获成长。

相关推荐
草履虫建模20 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq1 天前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq1 天前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
学嵌入式的小杨同学1 天前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
Re.不晚1 天前
Java入门17——异常
java·开发语言
爱吃rabbit的mq1 天前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
精彩极了吧1 天前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
(❁´◡`❁)Jimmy(❁´◡`❁)1 天前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi1 天前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
南极星10051 天前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言