Performance 如何在线性时间内找到两个有序链表中的公共元素?

Performance 如何在线性时间内找到两个有序链表中的公共元素?,performance,linked-list,Performance,Linked List,设A和B是两个有序链表。编写一个方法,查找a和B的公共元素(如果存在)。运行时间应该是线性的 我的解决方案: 公共作废搜索(SLLNode A、SLLNode B){ 对于(int i=0;i这是问题的一个可能的线性解决方案 public static Integer common(List<Integer> l1, List<Integer> l2) { int j = 0; int k = 0; while ( j < l1.size()

设A和B是两个有序链表。编写一个方法,查找a和B的公共元素(如果存在)。运行时间应该是线性的

我的解决方案:

公共作废搜索(SLLNode A、SLLNode B){

对于(int i=0;i这是问题的一个可能的线性解决方案

public static Integer common(List<Integer> l1, List<Integer> l2) {
    int j = 0;
    int k = 0;
    while ( j < l1.size() && k < l2.size() ) {
        if (l1.get(j).intValue() == l2.get(k).intValue()) return l1.get(j);
        else if (l1.get(j).intValue() > l2.get(k).intValue()) k++;
        else j++;
    }
    return null;
}
公共静态整数公共(列表l1、列表l2){
int j=0;
int k=0;
而(jl2.get(k).intValue())k++;
else-j++;
}
返回null;
}
测试场景:

public static void main(String[] args) {
    List<Integer> l1 = new LinkedList();
    List<Integer> l2 = new LinkedList();
    for (int i=0; i<10; i++) l1.add(i);
    for (int i=10; i<20; i++) l2.add(i);
    l1.add(15);
    System.out.println(common(l1,l2));
}   
publicstaticvoidmain(字符串[]args){
列表l1=新链接列表();
列表l2=新的LinkedList();

对于(inti=0;我认为mergesort使用两个排序列表来获得一个排序输出。您可以应用相同的方法并查找两个相同的元素。