[算法学习]求链表的中间结点
2016-02-18 13:56
393 查看
问题描述: 返回链表的中间结点(如果是两个则返回两个)
解法与分析: 用两个指针移动的方法来解决问题。一个指针每次移动1个结点,另外一个指针移动2个结点。
附:源码地址
解法与分析: 用两个指针移动的方法来解决问题。一个指针每次移动1个结点,另外一个指针移动2个结点。
参考代码如下
[code]static class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } @Override public String toString() { return "ListNode [val=" + val + "]"; } } /** * 返回中间节点 * @param head * @return */ public static ListNode[] getCenterNode(ListNode head) { ListNode[] results = { null, null }; if (head == null) { return results; } ListNode left = head; ListNode right = head.next; // 如果只有一个节点 if (right == null) { results[0] = left; return results; } // 如果不止有一个节点 while (right.next != null) { left = left.next; right = right.next; right = right.next; if (right == null) { results[0] = left; return results; } } results[0] = left; results[1] = left.next; return results; }
附:源码地址
相关文章推荐
- jQuery自学教程(一)
- 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数
- Dynamics AX Hostory
- Java线程(十):CAS
- 【python】编程语言入门经典100例--3
- Ubuntu安装gitlab
- [算法学习]求出链表中倒数第n个节点
- 加密算法介绍
- Centos YUM 升级PHP至5.3.3
- [Unity]Android(安卓)代码安卓APK时,使用系统安装器安装的[最正确]办法(不弹出选择打开的程序)
- 黑客魔术!如何黑掉一台根本不联网的电脑
- android进程间通信之Broadcast
- 为什么 volatile 关键字不能在 kernel 中使用(linux kernel 文档翻译)
- [算法学习]判断链表是否是环结构
- Java中通过UDP协议发送和接受数据
- linux 笔记
- Java中通过UDP协议发送和接受数据
- 1.基础部分
- 常用的抓包软件
- [算法学习]合并两个排序的链表