顺序表经典算法

1.移除元素

728672f94f864607b27935976483e3d5.png

 思路一

若只考虑移除元素,可以创建新的数组,遍历原数组,将不为val的值放到新数组中,返回新数组即可

思路二

双指针:创建两个指针src,dst

1.若src指向的值为val,则src++

2.若src指向的值不是val,nums[dst++]=nums[src++]

具体过程如下图

d95a0646f21e4c09b98b2a311ddf2661.png

8da9c49d7c0a4bb19e9ea76565e304e0.png 

2eb8697c1ace4f4dbb036c25fdf53579.png 

30d8aaeb298d46a3822a7ab7188d286d.png 

02e1fcec35284d62a94d9506d5699523.png 

f09e91f427f2494c8a6ae4e561fee394.png 

代码实现如下

 40130b8095a54b01acaf61730795cc53.png

 2.合并两个有序链表

c345371101a74bb3b1a33b15f2d57f68.png

 思路一

将num2中的数据依次放入到num1数组的后面,将num1进行排序

思路二

因为两个数组均为升序排列,所以考虑从两个数组的最后位置比大小,将大的数字放到num1的最后,一直往前比

具体过程如下图

c9e101da1f084b1f8d65eb568ad78efe.png

b5beb9869f874e908aabb13d01ef0c8f.png 

3ea9300dffc34ac29063b16386e1118b.png 

9cc5085a75be40e2b836a9aeb8a65678.png 

86187b8dba4348298819acdd865d5002.png 

012ac069648741979a9d9071bd794e0d.png 

b0f70db9fb88492c953d24fd9fbdc699.png 

可以发现l2先退出循环

f26cc8f4e3514c199a0751398c8db12a.png 

如果l1先退出循环,可以将l2的数据直接放入l3中,再将l3向前移  最后结果如下图

263e5f30f27b4498b0018d793b5c24df.png

代码实现如下

39c0bb3e3c9f4e6ea979ac9c30fd405b.png

 

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值