import java.util.*;
class Ideone {
public static void main
(String[] args
) { List<Integer> list = new ArrayList<>(
Arrays.
asList(6,
4,
5,
6,
0,
6,
3,
4,
1,
6,
1,
6,
0,
6,
8,
3)); List
<Integer
> subList
= Arrays.
asList(6,
0,
6);
removeAllSubList(list, subList);
}
public static void removeAllSubList(List<?> list, List<?> subList) {
// find first occurrence of the subList in the list, O(nm)
// if found
if (i != -1) {
// bulk remove, O(m)
list.subList(i, i + subList.size()).clear();
// recurse with the rest of the list
removeAllSubList(list.subList(i, list.size()), subList);
}
}
}
CmltcG9ydCBqYXZhLnV0aWwuKjsKCmNsYXNzIElkZW9uZSB7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgewoJCUxpc3Q8SW50ZWdlcj4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigKCQkJQXJyYXlzLmFzTGlzdCg2LCA0LCA1LCA2LCAwLCA2LCAzLCA0LCAxLCA2LCAxLCA2LCAwLCA2LCA4LCAzKSk7CgkgICAgTGlzdDxJbnRlZ2VyPiBzdWJMaXN0ID0gQXJyYXlzLmFzTGlzdCg2LCAwLCA2KTsKCSAgICAKCQlyZW1vdmVBbGxTdWJMaXN0KGxpc3QsIHN1Ykxpc3QpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihsaXN0KTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZUFsbFN1Ykxpc3QoTGlzdDw/PiBsaXN0LCBMaXN0PD8+IHN1Ykxpc3QpIHsKICAgIAkvLyBmaW5kIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHN1Ykxpc3QgaW4gdGhlIGxpc3QsIE8obm0pCiAgICAJaW50IGkgPSBDb2xsZWN0aW9ucy5pbmRleE9mU3ViTGlzdChsaXN0LCBzdWJMaXN0KTsKICAgIAkvLyBpZiBmb3VuZAogICAgCWlmIChpICE9IC0xKSB7CiAgICAgICAgCS8vIGJ1bGsgcmVtb3ZlLCBPKG0pCiAgICAgICAgCWxpc3Quc3ViTGlzdChpLCBpICsgc3ViTGlzdC5zaXplKCkpLmNsZWFyKCk7CiAgICAgICAgCS8vIHJlY3Vyc2Ugd2l0aCB0aGUgcmVzdCBvZiB0aGUgbGlzdAogICAgICAgIAlyZW1vdmVBbGxTdWJMaXN0KGxpc3Quc3ViTGlzdChpLCBsaXN0LnNpemUoKSksIHN1Ykxpc3QpOwogICAgCX0KICAgIH0KfQ==