求链表的中间节点
来源:互联网 发布:青少年编程培训班 编辑:程序博客网 时间:2024/05/01 11:36
解题思路:
1.常规思路:先从头到尾遍历一次链表,求出链表长度N,随后在遍历链表一次,找出链表中的中间结点。需要遍历链表2次。
2.令面试官满意的解法:只需遍历链表一次,即设置两个指针p1和p2,开始两个指针都指向链表的头部,同时移动两个指针,一个每次移动一步,一个每次移动两步,循环的结束条件将链表个数是奇数还是偶数都包含进来,详细见代码。
public class Solution {class ListNode {int val;ListNode next = null;public ListNode(int val) { this.val = val;}}/**求链表的中间节点,也可以用双指针来实现 * * @param head * @return */public ListNode findMidInLinkdedList(ListNode head) {if(head == null) {return null;}//p1一次只走1步,p2一次走两步ListNode p1 = head;ListNode p2 = head;//首先得把p2定位到链表的最后while (p2 != null) {if (p2.next != null) {p2 = p2.next.next ;} else {break;}p1 = p1.next ;}return p1;}}
阅读全文
0 0
- 求链表的中间节点
- 求链表的中间节点
- 求单链表的中间节点
- 找链表的中间节点
- 单链表的中间节点
- 求单链表的中间节点
- 输出单链表的中间节点
- 查找单链表的中间节点
- 寻找单链表的中间节点
- 查找单链表的中间节点
- 寻找单链表的中间节点
- 要寻找一个单链表的中间节点
- 查找链表的中间节点
- 遍历链表一遍取出中间的节点
- 快速找到单链表的中间节点
- 获取未知长度单链表的中间节点
- 删除链表的中间节点
- 查找链表的中间节点
- Ubuntu 16.04.1搭建mantis服务器(基于php7.0)
- ajax 编辑保存table
- STL学习感悟(一)
- RocketMQ Quick Start
- 不能错过的Sketch实用新技巧和资源集锦
- 求链表的中间节点
- AttributeError: module 'tensorflow' has no attribute 'global_variables_initializer'解决
- iOS之WKWebView修改网页页面的值
- 安卓原生APP内嵌webview调试
- 如何在extenreports添加错误的截图
- UE4版本控制
- Cocos2d-x 多分辨率适配完全解析 来源:CocoaChina
- 全国电赛K题江苏省二等奖----王澳刚
- 编程题——地下迷宫