首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >力扣之顺序表

力扣之顺序表

作者头像
始终学不会
发布2023-03-28 10:24:05
发布2023-03-28 10:24:05
16800
代码可运行
举报
文章被收录于专栏:小杰的学习本小杰的学习本
运行总次数:0
代码可运行

写在前面:

学完复杂度之后,算是正式进入到数据结构的学习。至此我们将首先了解顺序表的有关知识,包括增删查改等接口函数及其思想。顺序表其实就是数组,它要求数据在内存中必须是连续存储的。本文主要介绍力扣的三道顺序表的习题,这些习题主要利用双指针的思想来解决。

1.力扣第二十七题:移除元素 2.力扣第二十六题:删除重复元素 3.力扣第八十八题:合并两个有序数组

1.移除元素:

 想法清楚了,写代码就不是什么难事了。代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
int removeElement(int* nums, int numsSize, int val)
{
     int src=0,dst=0;
     while(src<numsSize)
     {
         if(nums[src]==val)
         {
            src++;
         }
         else
         {
             nums[dst]=nums[src];
             dst++;
             src++;
         }
     }
     return dst;

}

2.删除重复元素(去重):

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
int removeDuplicates(int* nums, int numsSize)
{
    int src=0,dst=0;
    while(src<numsSize)
    {
        if(nums[src]==nums[dst])
        {
            src++;
        }
       else
       {
           dst++;
           nums[dst]=nums[src];
           src++;
       }
    }
   return dst+1;
}

 这里唯一要注意的就是返回值,dst只是数组的下标,而数组总元素的大小应该是下标加一

3.合并两个有序数组:

 代码也很简单:

代码语言:javascript
代码运行次数:0
运行
复制
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    
     int end1=m-1;
     int end2 = n-1;
     int i =m+n-1;
     while(end1>=0&&end2>=0)
     {
         if(nums1[end1]>nums2[end2])
         {
             nums1[i--]=nums1[end1--];
         }
         else
         {
             nums1[i--]=nums2[end2--];
         }
     }
     while(end2>=0)
     {
         nums1[i--]=nums2[end2--];
     }
}

写在后面:

各个题目的思想解读我对放在图片中一起讨论了,因为我感觉这样会更好理解。博主的图也是有限的,所以这篇博客就不放图了,骚话也没想到,继续期待下一篇吧,说不定下一篇就有了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档