01 引言 最近业余刷了一些 leetcode 上的题目,遇到好多可以用双指针技术来快速解决的题目。这里对双指针技术做个归纳,方便后续查漏补缺。 闲话少说,我们直接开始吧! 02 双指针的引入
为了加深大家的理解,这里我们来看几个具体的例子吧! 03 判断回文字符串
解决方案: def isPalindrome(str): i = 0 j = len(str) -1 while i<j: if str[i] != str[j]: return False i = 1 j -= 1 return True 我们使用了双指针的思想解决了上述问题,上述三个步骤如下:
04 链表中的中间元素
代码如下:
复杂度分析:
05 使用快慢指针
代码如下: def middleNode(self, head: ListNode) -> ListNode: slow = fast = head while fast and fast.next: slow = slow.next fast = fast.next.next return slow 上述代码中,使用了往同一个方向移动的两个指针,同样涉及三个通用步骤。具体如下:
06 总结 双指针技术可以帮助大家减少算法的运行时间,我们可以将其与数组和链表一起使用。指针不一定从同一位置开始,也不一定朝同一方向移动,停止条件需要根据查找的内容来进行定义。 嗯捏,就酱~ 您学废了嘛? 点击上方小卡片关注我 万水千山总关情,点个在看行不行。 |
|
来自: 闲野之家 > 《Python 入门》