Size: a a a

Node.js — русскоговорящее сообщество

2020 May 28

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
Эльдар Юсупжанов
let arr1 = [1, 3, 4, 6, 8];
let arr2 = [2, 5, 7, 6, 8, 9];

arr1.sort()
arr2.sort()

const answer = [];

let i=0;

for(let j=0; j < arr2.length; ) {

   if(arr1[i] === arr2[j]) { i++; j++; }
   else if(arr1[i] > arr2[j]) { j++; }
   else if(arr1[i] < arr2[j]) { answer.push(arr1[i]); i++ }
   
   if(i === arr1.length) break;
}

for(; i < arr1.length; i++)
      answer.push( arr1[i] );

for(let k=0; k < answer.length; k++)
   console.log(answer[k]);
если с мепой делать то ещё оптимизированней) а то 2 сортировки н лог н
источник

I

Igor in Node.js — русскоговорящее сообщество
Эльдар Юсупжанов
let arr1 = [1, 3, 4, 6, 8];
let arr2 = [2, 5, 7, 6, 8, 9];

arr1.sort()
arr2.sort()

const answer = [];

let i=0;

for(let j=0; j < arr2.length; ) {

   if(arr1[i] === arr2[j]) { i++; j++; }
   else if(arr1[i] > arr2[j]) { j++; }
   else if(arr1[i] < arr2[j]) { answer.push(arr1[i]); i++ }
   
   if(i === arr1.length) break;
}

for(; i < arr1.length; i++)
      answer.push( arr1[i] );

for(let k=0; k < answer.length; k++)
   console.log(answer[k]);
думаю, простое arr1.filter(e => !new Set(arr2).has(e)) будет работать так же быстро
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
Igor
думаю, простое arr1.filter(e => !new Set(arr2).has(e)) будет работать так же быстро
только сет вынести
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
а то каждый раз строить сет тоже такое се)
источник

AS

Artem Soroka in Node.js — русскоговорящее сообщество
Igor
думаю, простое arr1.filter(e => !new Set(arr2).has(e)) будет работать так же быстро
GC вас обожает
источник

I

Igor in Node.js — русскоговорящее сообщество
Nazar Rohozhuk
а то каждый раз строить сет тоже такое се)
👌
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Artem Soroka
На прямой вопрос был дан простой ответ. Нет смысла усложнять, когда этот не нужно
а где гарантия что это не нужно? простой ответ не всегда подходящий
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
Igor
думаю, простое arr1.filter(e => !new Set(arr2).has(e)) будет работать так же быстро
Хм. Мне кажется нет. Ваш работает за n * n log n, не?
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
нет, построить сет это n, has работает за константу
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
Nazar Rohozhuk
нет, построить сет это n, has работает за константу
разве не n log n?
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
поиск по сету как никак
источник

AS

Artem Soroka in Node.js — русскоговорящее сообщество
Эльдар Юсупжанов
поиск по сету как никак
источник

AS

Artem Soroka in Node.js — русскоговорящее сообщество
Алексей Попов
а где гарантия что это не нужно? простой ответ не всегда подходящий
*цитата из Кнуда*
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
блин
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
все верно, сет has работает за константу
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
Эльдар Юсупжанов
разве не n log n?
Перепутал.)) Просто log n. Но все же никак не пойму почему за константу-то??? Поиск по сетам и мапам - бинарный, а он берет log n
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
хешмап - имба
источник

ЭЮ

Эльдар Юсупжанов... in Node.js — русскоговорящее сообщество
её нужно ребалансить)))
источник

NR

Nazar Rohozhuk in Node.js — русскоговорящее сообщество
порядок не хранит, и дольше инсерт)
источник