Ответы пользователя по тегу JavaScript
  • Убрать все повторяющиеся элемента за O(n) времени?

    ayazer
    @ayazer
    Sr. Software Engineer
    используйте доп. структуру данных чтоб хранить кол-во вхождений каждого элемента в список. т.е. для каждого элемента в списке (сложность O(n)) нужно увеличить счетчик в этой структуре данных (в случ. с хеш таблицой это O(n) в худшем и О(1) в среднем). и потом еще раз пройтись по хештаблице и достать с нее все элементы где счетчик = 1 (сложность O(n)). в итоге даже сложность для худшего случая будет o(n + n + n) = O(n)

    те
    var inputArray = new[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
    var set = new Dictionary<int, int>();
    
    foreach (var val in inputArray)
    {
        if (!set.ContainsKey(val))
        {
            set.Add(val, 1);
        }
        else
        {
            set[val] = set[val] + 1;
        }
    }
    
    var result = new List<int>();
    foreach (var val in set)
    {
        if (val.Value == 1)
        {
            result.Add(val.Key);
        }
    }
    
    return result; //[5]

    ^ можете считать примером на псевдокоде, читатся вроде должно без проблем
    Ответ написан
    2 комментария
  • Как управлять памятью в javascript?

    ayazer
    @ayazer
    Sr. Software Engineer
    это не относится в джаваскрипту, это типичная проблема когда данных слишком много чтоб с ними работать "в лоб".

    так что (если уж хочется ради интереса решить эту задачу через бинарный поиск) распиливайте дерево на несколько мелких. Ведь с каждым шагом область поиска сужается в 2 раза. Если все данные занимают 60Гб (как написал Сергей Соколов), то после первых 5 шагов искать нужно будет уже только в 3.25Гб. Как вариант - используйте 1 дерево чтоб сузить область поиска до того размера который уже влазит в память, и потом уже загружайте второе дерево и ищите в нем
    Ответ написан
    5 комментариев
  • Как транслировать потокое видео с экрана компьютера на веб-страницу?

    ayazer
    @ayazer
    Sr. Software Engineer
    вы переизобрели MJPEG. он используется во всяких системах видеонаблюдения т.к. из-за минимального кол-ва сжатия дает хорошие стопкадры. главный недостаток - по той-же причине потребляет огромное кол-во трафика (реально огромное, видео на 5-10 минут с фпс 20+ в этом формате будет занимать пару гб). Выше в комментариях советовали использвать вебртс. Так вот, на всякий случай - он тут нахрен не нужен. Но обратить внимание на H.264 который там используется можно. Что видео в mjpeg, что h.264 можно просто и без лишних телодвижений открыть в браузере как стрим. А нативная поддержка видеокодека в браузере будет работать быстрее чем рендер кадров джаваскриптом.
    Ответ написан
    4 комментария