wap网站现在还有什么用,聊天软件开发技术,docker免费视频,沈阳市城乡建设局网站通过一道题来了解快慢指针 这是一道力扣的算法题#xff0c;首先来读题#xff0c;是删除链表的中间元素#xff0c;先来分析一下题#xff0c;链表一共有三种可能#xff0c;第一种是空链表#xff0c;第二种链表的个数是偶数#xff0c;第三种是链表的个数是奇数…
通过一道题来了解快慢指针 这是一道力扣的算法题首先来读题是删除链表的中间元素先来分析一下题链表一共有三种可能第一种是空链表第二种链表的个数是偶数第三种是链表的个数是奇数我们分别来对这三种情况讨论。
大多数人第一种想到的就是遍历链表记录链表的长度然后用长度除2再1最后返回这个数
另一种就是快慢指针首先我们先定义两个指针其中一个指针一次走一个元素另一个一次走两个元素当第快指针走向链表最后一个节点或者走出节点时此时慢指针就指向要返回的那个节点。
怎么实现让两个指针向后走要通过一个循环我们先不定义循环条件先实现循环
这样就可以实现slow一次一个
fast一次两个
终止条件要怎么写当为奇数时 slow1,fast1;
slow2,fast3;
slow3,fast5;
奇数时就是fast的next为空指针
当为偶数时
slow1,fast1;
slow2,fast3;
slow3,fast5;
slow4,fastNULL;
当为偶数时就是fast是NULL跳出循环。
然后将循环条件填入
那么这样写对吗答案是对的那么如果将他们翻转过来写成fast-nextfast还对吗那就不对了如果fast为空指针对空指针进行解引用就会报错还是要写成fastfast-next因为当fast为空指针就结束了不会进行fast的解引用因此就不会发生报错。
最后再返回slow指针就可以了。
提交试一下答案也是对的
今天的每日算法就到此为止了明天继续。