当前位置: 首页 > news >正文

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

本章概述

  • 算法题1
  • 算法题2
  • 算法题3
  • 彩蛋时刻!!!

算法题1

力扣:移除元素
我们先来看这个题目的要求描述:在这里插入图片描述
把与val相同数值的元素移除掉,忽略元素的相对位置变化,然后返回剩下与val值不同的元素个数。来看下它给的例子描述:在这里插入图片描述

  • 题解:我们可以运用顺序表删除指定数据的思路来进行解题,我们可以定义双变量,用这两个变量去遍历数组元素,然后通过移动数组元素来移除指定元素。逻辑图展示:在这里插入图片描述
  • 进行代码展示:
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

力扣:删除有序数组中的重复项
我们来看下这个题目的描述:在这里插入图片描述
这个数组不是严格意义上的递增数组,要求把重复的元素给删掉,而且各个元素的相对位置不变化,最后返回不重复的元素个数。来看一下它给的例子:在这里插入图片描述

  • 题解:大体的思路和上一个算法题类似,也是需要两个变量进行遍历数组。在这里直接给大家展示代码:
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是用来存放较大的元素。进行逻辑图展示:在这里插入图片描述
      进行代码展示:
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》
在这里插入图片描述
每章一句人生漫长,祝你每天都快快乐乐!感谢你能看到这里,点赞+关注+收藏+转发是对我最大的鼓励,咱们下期见!!!


http://www.mrgr.cn/news/54318.html

相关文章:

  • AVL树的概念与实现
  • ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)
  • Spring AI 整体介绍_关键组件快速入门_prompt_embedding等
  • Java集合常见知识总结(中)
  • 碰到这个问题请更新或重新安装fastapi版本
  • SpringBoot中的对象
  • Lucas带你手撕机器学习——逻辑回归
  • OpenFeign的使用
  • AI学习指南深度学习篇-自编码器的变种
  • 论文精读:PRL 交变磁MnTe中的手性分裂磁振子
  • 场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合
  • 【74LS48译码器】2022-1-2
  • 每天5分钟玩转C#/.NET之goto跳转语句
  • C++ | Leetcode C++题解之第494题目标和
  • TCP与UDP
  • Java最全面试题->Java基础面试题->JavaWeb面试题->Filter/Listener面试题
  • 基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
  • Python 列表专题:列表可变性
  • 游戏投屏软件有哪些?分享这10款比较好用的!
  • Java ArrayList 深入解析
  • 思维导图怎么制作?这四款制作思维导图的软件值得推荐!
  • LLMS-Stable diffusion 报错 index out of bounds
  • 调整奇数偶数的顺序
  • 正则表达式 - 修饰符
  • 【C++贪心 单调栈】1727. 重新排列后的最大子矩阵|1926
  • 数据分箱:决策树得到特征的分箱区间后后怎么映射到原数据中?