Java 此程序的运行时复杂性是多少?(esp retainal()方法) 公共静态列表返回交叉口(列表a、列表b){ 列表l1=新阵列列表(a); 列表l2=新阵列列表(b); l1.保留(l2);//在l2中查找交点 l1=移除的副本(l1); 返回l1;} 移除的公共静态列表副本(列表l){ Set se=新哈希集(l); l、 清除(); l=新阵列列表(se); 返回l;}

Java 此程序的运行时复杂性是多少?(esp retainal()方法) 公共静态列表返回交叉口(列表a、列表b){ 列表l1=新阵列列表(a); 列表l2=新阵列列表(b); l1.保留(l2);//在l2中查找交点 l1=移除的副本(l1); 返回l1;} 移除的公共静态列表副本(列表l){ Set se=新哈希集(l); l、 清除(); l=新阵列列表(se); 返回l;},java,list,set,Java,List,Set,上面的代码是返回一个包含两个列表的交集的列表,没有重复项。我的问题是这个列表的时间复杂度是多少?retainAll()方法的时间复杂度是多少?将列表转换为集合是否需要花费时间?一个有趣的话题是测量单个方法的复杂性。有几个因素导致了复杂性 看这里 这是一个非常好的站点,如何计算复杂性您看过实现了吗? public static List<Integer> returnIntersection(List<Integer> a,List<Integer> b){

上面的代码是返回一个包含两个列表的交集的列表,没有重复项。我的问题是这个列表的时间复杂度是多少?retainAll()方法的时间复杂度是多少?将列表转换为集合是否需要花费时间?

一个有趣的话题是测量单个方法的复杂性。有几个因素导致了复杂性

看这里


这是一个非常好的站点,如何计算复杂性

您看过实现了吗?
public static List<Integer> returnIntersection(List<Integer> a,List<Integer> b){

    List<Integer> l1=new ArrayList<Integer>(a);
    List<Integer> l2=new ArrayList<Integer>(b);
    l1.retainAll(l2);//find intersection in l2
    l1=removeDuplicates(l1);
    return l1;}

public static List<Integer> removeDuplicates(List<Integer> l) {

Set<Integer> se=new HashSet<Integer>(l);
l.clear();
l=new ArrayList<Integer>(se);
return l;}