Недавно мне задали очень сложный вопрос в интервью.
Учитывая массив, подобный (например,)
Теперь напишите оптимизированный алгоритм (без использования в функции построения, кроме основной, как для цикла и т.д.), Чтобы выход не содержал повторяющихся значений.
Обратите внимание: конечно, мы можем сделать это, имея 2 для циклов, но не оптимизированный. Они хотели оптимизированное решение.
В С# просто используйте метод System.Linq Distinct
.
var stringArray = { "0", "1", "5", "65", "r" };
var uniqueStringArray = stringArray.Distinct().ToArray();
Вы можете использовать модифицированную сортировку слияния. Вы представляете свой массив как два массива, и они объединяют их, но когда вы находите равные значения при операции слияния, вы выбрасываете один из них.
'var stringArray = {"0", "1", "5", "65", "r"}; var uniqueStringArray = stringArray.Distinct(). ToArray();
В Java поместите массив в Set
см. http://docs.oracle.com/javase/7/docs/api/java/util/Set.html
Для С# вы можете:
var result = new HashSet<string>(yourArray);
В LinQ возможно
strarray = Your array.
strarray.Distinct().ToArray()
В java вы можете добавить все элементы в Set
Collections#addAll()
Set<T> data = new HashSet<T>();
Collections.addAll(data, yourArray);
PS: Set - это коллекция, которая не содержит повторяющихся элементов.