算法--打印两个链表的公共值

转载请标明出处http://www.cnblogs.com/haozhengfei/p/a31ea00f9b17ae900ab225f6c32334c2.html 


打印两个链表的公共值


打印两个链表的公共值练习

第6节 打印两个链表的公共值练习题

 

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。

给定两个链表的头指针headAheadB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值

测试样例:
{1,2,3,4,5,6,7},{2,4,6,8,10}
返回:[2.4.6]
 
 
1
import java.util.*;
2

3
/*
4
public class ListNode {
5
    int val;
6
    ListNode next = null;
7

8
    ListNode(int val) {
9
        this.val = val;
10
    }
11
}*/
12
public class Common {
13
    public int[] findCommonParts(ListNode headA, ListNode headB) {
14
        if(headA == null || headB == null)
15
            return null;
16

17
        List<Integer> list = new ArrayList<>();
18
        //headA和headB有一个为null,比较结束
19
        while (headA != null && headB != null) {
20
            if (headA.val > headB.val) {
21
                headB = headB.next;
22
            } else if (headA.val < headB.val) {
23
                headA = headA.next;
24
            } else {
25
                list.add(headA.val);
26
                headA = headA.next;
27
                headB = headB.next;
28
            }
29
        }
30
        int[] result = new int[list.size()];
31
        for (int i = 0; i < list.size(); i++) {
32
            result[i] = list.get(i);
33
        }
34
        return result;
35
    }
36
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
原文地址:https://www.cnblogs.com/haozhengfei/p/a31ea00f9b17ae900ab225f6c32334c2.html