代码随想录算法训练营第九天|字符串,双指针回顾

字符串:

库函数:

对于库函数的应用,打基础的时候不要太迷恋库函数,因为之前复习代码题,我反而是第一时间不太会想到库函数,即使在比较长的代码中split,reverse之类的库函数也是再写了一遍,虽然更强调的是要了解基础,但对于我来说了解一下这些常用的库函数也是有必要的

双指针法:

虽然也做了几道题,但是第一时间还是想到的暴力,然后看到题解说双指针才会再去想,或者之前做过的双指针题,再看到才会想起来,积累也是一部分吧,双指针法在数组,链表和字符串中很常用。要明确两个指针各自的作用,除了暴力再多想下双指针,用双指针用一个for循环完成之前两个for循环做的事。

想一想:344反转字符串

              27移除元素

              151反转字符串里的单词   中双指针的作用

反转:

反转的思路 ,感觉多做几道题还是有点想法的,举个例子比划几下很明显

比如,整体反转,局部反转

当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章

双指针:

数组:

原地移除数组中的元素,数组中的移除是通过覆盖的方式用两个for循环,想一想两个For循环能不能用一个呢。这就是双指针的方法,一个指针用来寻找放在新数组中的元素,另一个指针负责这个元素要放在新数组的什么位置

所以此时使用双指针法才展现出效率的优势:通过两个指针在一个for循环下完成两个for循环的工作。

字符串:

卡码网把数字替换成number这道题,在不使用额外空间下

思路就是首先扩充数组。然后双指针从后向前替换空格。

有同学问了,为什么要从后向前填充,从前向后填充不行么?

从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。

其实很多数组(字符串)填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

在删除冗余空格的过程中,如果不注意代码效率,很容易写成了O(n^2)的时间复杂度。其实使用双指针法O(n)就可以搞定。

链表:

链表的题,一定要画图,搞清指针的指向

还有多做题吧,这块题好多,像是判断链表有没有环,还有相交链表,都是由于之前做过,思路就有了,然后就是代码的细节了,不然我一开始根本想不到

反转链表(不用库函数)

在链表中求环(判断有没有环(快指针一次走两步,慢指针一次走一步,相遇就是有环),

                        (环的起点在哪(难,画图 整理式子 寻找关系))

N个数之和:

这种题,刚开始做是每道都卡啊

两数之和,可以双指针可以哈希表

三数之和:使用哈希法不容易去重,使用双指针,for循环遍历,两个指针找另外两个数指针如何移动呢,别忘记先排序!!从小到大排序后,通过和与目标值的大小来移动

四数值和:在三数之和的外层又套了个for循环。这两个难点都是去重

这些天做的使用双指针解决问题的经典题目,除了链表一些题目一定要使用双指针,其他题目都是使用双指针来提高效率,一般是将O(n^2)的时间复杂度,降为$O(n)$。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码随想录算法训练营是一个优质的学习和讨论平台,提供了丰富的算法训练内容和讨论交流机会。在训练营中,学员们可以通过观看视频讲解来学习算法知识,并根据讲解内容进行刷题练习。此外,训练营还提供了刷题建议,例如先看视频、了解自己所使用的编程语言、使用日志等方法来提高刷题效果和语言掌握程度。 训练营中的讨论内容非常丰富,涵盖了各种算法知识点和解题方法。例如,在第14天的训练营中,讲解了二叉树的理论基础、递归遍历、迭代遍历和统一遍历的内容。此外,在讨论中还分享了相关的博客文章和配图,帮助学员更好地理解和掌握二叉树的遍历方法。 训练营还提供了每日的讨论知识点,例如在第15天的讨论中,介绍了层序遍历的方法和使用队列来模拟一层一层遍历的效果。在第16天的讨论中,重点讨论了如何进行调试(debug)的方法,认为掌握调试技巧可以帮助学员更好地解决问题和写出正确的算法代码。 总之,代码随想录算法训练营是一个提供优质学习和讨论环境的平台,可以帮助学员系统地学习算法知识,并提供了丰富的讨论内容和刷题建议来提高算法编程能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [代码随想录算法训练营每日精华](https://blog.csdn.net/weixin_38556197/article/details/128462133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值