顺序表经典算法(+OJ刷题)

文章目录

  • 一、移除元素
  •    1.常规思路
  •    2.双指针法
  • 二、合并两个有序数组
    • 1.先合并再排序
    • 2.双指针法延伸
  • 总结

一.移除元素

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目链接放在这里,有兴趣的小伙伴可以去尝试一下!!!

思路一: 顺序表的删除

我们很容易想到的一个思路就是利用顺序表删除数据的思想,首先遍历整个数组,如果碰到数组的值==val,就将后面的元素都整体向前挪动一个单位,并将numSize--,表示数组的长度减小。

代码实现如下:

这种方法通俗易懂,但是时间复杂度是o(n^2),运行效率比较低,下面我们介绍另一种,只需要一层循环的方法。 

 思路二:双指针法

整体思路就是用一个走的比较快的指针探路,碰到不是val的值直接赋值给慢指针,碰到val就直接将这个val跳过。

二. 合并两个有序数组

思路一:先合并再排序

 这里我用的排序算法是最简单的冒泡排序,大家也可以使用其他一些排序算法!!!

思路二:双指针法的延伸

前一道题是一个数组我们可以采用双指针法,而这道题是两个数组,我们就可以使用三个指针来解决问题。

整体思路:使用两个指针分别指向这两个数组的末尾(注意:这里不能从两个数组的开头开始,因为这样可能会导致有些数据还没有读取就已经被覆盖了)。再用一个指针指向nums1数组的末尾,用来添加合并后数组的数据。

代码实现如下:


总结

通过这两道经典题目,我们要熟练掌握双指针算法的思想!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值