リストに重複があるかどうかを確認し、再帰のみを使用して (ループなしで) 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;
}