Сложность времени
Временная сложность вашего кода будет O(n)
, , где n
- количество элементов в list
. Причина:
for (T i : list) { // iterates through all the 'n' elements
if (!set.add(i)) {
repeatedValues.add(i);
}
}
Пространственная сложность
С другой стороны, поскольку вы используете Set
для временного хранения значений, пространство, требуемое в худшем случае для используемого Set
, будет равно:
Set<T> set = new HashSet<>(list.size()); // all elements are unique
Следовательно, пространственная сложность вашего решения также будет O(n)
. Конечно, n
это значение, которое является размером списка. Если размер списка увеличивается, увеличивается и необходимое пространство.
выход
public void printRepeatedStrings(){
List<String> stringList = Arrays.asList("ali","mahdi","hadi","mahdi","mojtaba","mohammad","mojtaba");
RepeatedValues<String> repeatedValues = new RepeatedValues<>(); // type 'T' bound
repeatedValues.findRepeatedValues(stringList)
.forEach(System.out::println); // prints ["mahdi","mojtaba"]
}