| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 数据结构与算法 -> 【力扣刷题】双指针在数组、链表中的妙用 -> 正文阅读 |
|
|
[数据结构与算法]【力扣刷题】双指针在数组、链表中的妙用 |
|
在刷力扣的时候是按照代码随想录的顺序刷的,在刷前两章数组和链表时发现双指针法是一种经常用到,但是有时不知道该咋用的方法。文中有许多都是引用代码随想录的内容,仅做记录,并非完全原创,只是为了供自己也供大家整理并做个参考。 目录 ?② 类似快速排序算法的双指针也可能解决某些数组或链表问题: 双指针法展现出效率的优势:通过两个指针在一个for循环下完成两个for循环的工作。 双指针法有以下几种常见类型: 1. 双指针从两边向中间移动① 如力扣977题有序数组的平方(附上链接:代码随想录)????????比较两个指针指的数大小,选出大的存入另个数组
?② 类似快速排序算法的双指针也可能解决某些数组或链表问题:已知带头结点的双向循环链表头结点指针为list,除头结点外的每个链结点数据域值为一个整数。请写一算法,将链表中所有数据域值大于0的结点放在所有数据域值小于0的结点之前。若链表中除头结点外没有其他结点,算法返回0,否则,算法返回1。
2. 双指针从头一起开始这在单链表中很常见。设置一个cur,pre记录他的前一个结点,中间可能还需要temp来保存某中间结点。 如力扣206.反转链表(代码随想录)
?3. 快慢指针法这是一种非常有技巧性的方法,也是比较难想到的高阶方法,非常巧妙。 ① 如27. 移除元素(代码随想录)
?② 环形链表(代码随想录)分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。
?从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点。
③?滑动窗口:209.长度最小的子数组(代码随想录)所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/31 4:00:15- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |