Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #131 (permalink)  
Старый 21.08.2018, 14:53
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Alexandroppolus,
var arr = [1,1,2,5,9,9,7,7];

function unq(arr) {
	var obj = {};
	for(var i = 0;  i < arr.length; i++){
		var num = arr[i];
		obj[num] ? delete obj[num] : obj[num] = 1;
	}
	return Object.keys(obj).map(n=>+n);
}

console.log(unq(arr));

Последний раз редактировалось j0hnik, 21.08.2018 в 14:56.
Ответить с цитированием
  #132 (permalink)  
Старый 21.08.2018, 15:00
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

опять не то. В таком решении вспомогательной памяти дохрена используется. А нужно O(1), т.е. несколько байт, независимо от длины массива. Как в решении для одного уникального
Ответить с цитированием
  #133 (permalink)  
Старый 21.08.2018, 15:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Alexandroppolus,
это решение проходит на кодварс, по заданию где один уникальный, надо лишь заменить
return +Object.keys(obj)[0]
Ответить с цитированием
  #134 (permalink)  
Старый 21.08.2018, 15:06
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Alexandroppolus,
как еще быстрей я хз, я сдаюсь, пишите
Ответить с цитированием
  #135 (permalink)  
Старый 21.08.2018, 15:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от j0hnik
это решение проходит на кодварс
но работает в разы дольше. На самом деле это косяк автора каты, он просто "не дожал" по объемам тестов при этом говорит о какой-то исключительной скорости..

----
ответ писать пока не буду, вдруг ещё кто заинтересуется
Ответить с цитированием
  #136 (permalink)  
Старый 21.08.2018, 15:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Alexandroppolus,
в личку
Ответить с цитированием
  #137 (permalink)  
Старый 22.08.2018, 12:12
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

если задача найти уникальные для массива целых чисел, то это можно сделать так:

const arr = [1,1,2,5,9,9,7,7]

function uniq (x) {
	return Array.from(new Set(x))
}

alert(uniq(arr))


__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #138 (permalink)  
Старый 22.08.2018, 16:27
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Кто знает существует ли более быстрый способ оставить уникальные элементы?
массив +- как в примере.
var rnd =()=> Math.floor(Math.random() * 500);
var arr = [], i = 1000;
while(i--) arr.push(rnd());
var uniq =arr=>{
     var newArr = [];
	for (var i = 0; i<arr.length; i++){
		var flag = true;
		for (var j = 0; j<newArr.length; j++){
			if(arr[i]===newArr[j]) {
				flag = false;
				break;
			}
		}
		if(flag) newArr.push(arr[i]);
	}
	return newArr;
};
console.log(uniq(arr))
Ответить с цитированием
  #139 (permalink)  
Старый 22.08.2018, 16:49
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

вариант из предыдущего поста должен быть в разы быстрее.

у тебя же квадратичная сложность, это весьма неоптимальный способ )
Ответить с цитированием
  #140 (permalink)  
Старый 22.08.2018, 16:58
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Alexandroppolus
вариант из предыдущего поста должен быть в разы быстрее.
Нет Сань, это к сожалению не так.

https://jsperf.com/4543543543
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовое задание Yandex xShift Общие вопросы Javascript 22 17.02.2018 21:53
Задание с SIP heeel Firefox/Mozilla 0 12.06.2017 01:12
Интересное задание "Поединок" помогите решить Anton27 Общие вопросы Javascript 1 23.05.2017 22:24
Тестовое задание. Дайте идею. FINoM Оффтопик 14 28.03.2011 10:09
Помогите сделать тестовое задание начального уровня по js makregistr Работа 1 16.12.2010 14:26