剑指Offer 37题 两个链表的第一个公共节点 Java版
来源:互联网 发布:js给div加class 编辑:程序博客网 时间:2024/05/21 10:10
package test;public class GetFirstCommonNode {class ListNode{public String key;public ListNode next;}public ListNode findFirstCommonNode(ListNode headOne, ListNode headTwo){if(headOne == null || headTwo == null){return null;}int length1 = getListLength(headOne); int length2 = getListLength(headTwo);int lenghtdif = length1 - length2;ListNode headLong = headOne;ListNode headShort = headTwo;if(length2 > length1){headLong = headTwo;headShort = headOne;lenghtdif = length2 - length1;}for(int i=0; i<lenghtdif; ++i){headLong = headLong.next;}while((headLong!=null)&&(headShort!=null)&&(headLong!=headShort)){headLong = headLong.next;headShort = headShort.next;}ListNode firstCommonNode = headLong;return firstCommonNode;}public int getListLength(ListNode head){int length = 0;ListNode node = head;while(node!=null){++length;node = node.next;}return length;}public static void main(String[] args) {// TODO Auto-generated method stubGetFirstCommonNode node = new GetFirstCommonNode();ListNode a = node.new ListNode();a.key = "a";ListNode b = node.new ListNode();b.key = "b";ListNode e = node.new ListNode();e.key = "e";ListNode d = node.new ListNode();d.key = "d";ListNode f = node.new ListNode();f.key = "f";ListNode h = node.new ListNode();h.key = "h";f.next = d;d.next = b;b.next = a;h.next = e;e.next = b;b.next = a;ListNode node1 = node.findFirstCommonNode(f, h);System.out.println(node1.key);}}另外书上还提到,还有蛮力法和用两个栈的方法,没事的时候可以练练手。
0 0
- 剑指Offer 37题 两个链表的第一个公共节点 Java版
- 剑指offer-两个链表的第一个公共节点
- 【剑指offer】两个链表的第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 【剑指offer】两个链表的第一个公共节点
- 剑指offer------两个链表的第一个公共节点
- 《剑指offer》两个链表的第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 剑指offer--两个链表的第一个公共节点
- 剑指offer 两个链表的第一个公共节点
- 剑指offer----两个链表的第一个公共节点----java实现
- 剑指offer--37两个单链表的第一个公共节点
- 【刷题剑指offer】两个链表的第一个公共节点
- 剑指offer面试题37 两个链表的第一个公共节点
- [剑指offer][面试题37]两个链表的第一个公共节点
- 剑指offer 面试题37—两个链表的第一个公共节点
- 剑指offer 37 - 两个链表的第一个公共节点
- 剑指offer 37:求两个链表的第一个公共节点
- 剑指Offer 52题 构建乘积数组 Java版
- Atitit.信息论原理概论attilax总结
- Atitit.识别损坏的图像
- 算法导论第七章思考题7-5三数取中划分 -c++
- Atitit 三论”(系统论、控制论、信息论
- 剑指Offer 37题 两个链表的第一个公共节点 Java版
- rapid-generator4.06 JAVA代码生成器配置,模板自定义
- 剑指Offer 40题 数组中只出现一次的数字 Java版
- 剑指Offer 40题扩展 其他数字出现3次 找出只出现一次的那个 Java实现
- 剑指Offer 41题 和为s的两个数字VS 何为S的连续正数序列 Java版
- Leetcode 160. Intersection of Two Linked Lists/CC150 2.7
- 在mac上使用VS Code编写C#应用程序
- AJAX学习一
- Leetcode 285. Inorder Successor in BST