java - 使用递归查找列表中的重复项?

标签 java list recursion

我想查找列表中是否有重复项,并仅使用递归(无循环)返回 true 或 false。因此,如果使用 char 的 ArrayList,[a,b,c,d,e] 应该返回 false。 [a,a,b,c,d] 或 [a,b,b,c,c,d] 应返回 true。我尝试并测试了不同的方法,它适用于某些情况,但并非全部。我改变了我的代码,这就是我现在所拥有的。 (最后一个if语句有问题) 有人能给我一些提示吗?谢谢。

    public static <T> boolean duplicate(List<T> list) throws NullPointerException {
        return duplicateHelper(list, list.get(0));
}

public static <T> boolean duplicateHelper(List<T> list, T t){
    if (list == null)
        throw new NullPointerException();
    if(list.isEmpty())
        return false;
    if(list.size() > 1){
        if(t.equals(list.get(1)))
            return true;        
    }
    if(list.size() == 1)
        return false;
    if(!duplicateHelper(list.subList(1,list.size()), t)){
        return  duplicate(list.subList(1,list.size()));
    }
    return false;

}

最佳答案

我建议这样做:

function recurse(myList, seenList)  
{  
    currentElement =     myList.removeLastElement();
    if(seenList.contains(currentElement)    
     {
        return false;  
      }
    seenList.add(currentElement);   


    return recurse(myList,seenList);
}  

虽然我意识到这是家庭作业,但我试图使其尽可能简单,但没有给出完整的解决方案。

关于java - 使用递归查找列表中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13053741/

相关文章:

java - 创建包含多个同名文件的 zip

spring - 如何使用 spring 缓 stub 据主键缓存整体列表

javascript - sencha touch 改变特定列表项的颜色

javascript - 尝试理解 JS 中具有两个参数输入的函数(如 functionX(param1)(param2) 中)

javascript - 递归删除具有相同 id 的 JSON 对象

java - 使用递归 Java 将十进制转换为二进制

java - 在 Java 中使用 Cp1250 创建文件

java - 使用Bitmap ArrayList动态填充ListView

swing - Jframe 窗口无法使用我的可执行 jar 打开

python - 初始化多个字符串,并将每个具有多个值的字符串初始化为一个变量。对字符串执行操作