在其他链接列表组中查找链接列表组

时间:2014-01-15 14:20:31

标签: java

我有这堂课:

public class IntNode {
private int _value;
private IntNode _next;
public IntNode(int val, IntNode n) {
_value = val;
_next = n;
}
public int getValue() {
return _value;
}
public IntNode getNext() {
return _next;
}
public void setValue(int v) {
_value = v;
}
public void setNext(IntNode node) {
_next = node;
}
}

和此:

public class IntList {
private IntNode _head;
public IntList( ) {
_head = null;
}
public IntList (IntNode node) {
_head = node;
}
. . . // methods
}

此列表代表整数。 在此列表中没有重复的数字,每个数字只出现一次。

我需要添加函数public boolean isSubset (IntList other),如果该组是列表的子组,则返回true,否则返回false。 例如:

A = {1,4,2,8}

B = [4,8}

所以A.isSubset(B)返回true,B.isSubset(A)返回false。 这个功能需要尽可能高效。

我知道我可以检查作为参数收到的组中的每个号码并在另一个列表中搜索此号码,然后再次检查下一个号码并在整个列表中再次循环,但它将是O(n²)所以它不会这么高效。 也许是其他一些解决方案?

1 个答案:

答案 0 :(得分:1)

我建议通过qicksort算法对列表进行排序,然后通过二分查找搜索元素。

在这里,您可以查看相应的维基百科主题:

Wiki - Quicksort

Wiki - Binary Search