База данных Firebase не работает с java-приложением [duplicate]

Вот мой ответ. Я не проверял его против сегодняшней партии ответов.

Алгоритмы на основе пересечений - это O (N ^ 2), поскольку они проверяют каждый новый набор на все существующие, поэтому я использовал подход, который индексирует каждое число и работает на близком к O (N) (если мы принимаем, что поиск по словарю - O (1)). Затем я запустил тесты и почувствовал себя полным идиотом, потому что он работал медленнее, но при ближайшем рассмотрении оказалось, что тестовые данные заканчиваются только несколькими различными наборами результатов, поэтому квадратичные алгоритмы не имеют большой работы для делать. Протестируйте его более чем на 10-15 различных ящиков, и мой алгоритм выполняется намного быстрее. Попробуйте тестовые данные с более чем 50 отдельными ящиками, и это невероятно быстрее.

(Edit: Также была проблема с тем, как выполняется тест, но я был не прав в моем диагнозе. Я изменил свой код, чтобы работать с тем, как выполняются повторные тесты.)

def mergelists5(data):
    """Check each number in our arrays only once, merging when we find
    a number we have seen before.
    """

    bins = range(len(data))  # Initialize each bin[n] == n
    nums = dict()

    data = [set(m) for m in data ]  # Convert to sets    
    for r, row in enumerate(data):
        for num in row:
            if num not in nums:
                # New number: tag it with a pointer to this row's bin
                nums[num] = r
                continue
            else:
                dest = locatebin(bins, nums[num])
                if dest == r:
                    continue # already in the same bin

                if dest > r:
                    dest, r = r, dest   # always merge into the smallest bin

                data[dest].update(data[r]) 
                data[r] = None
                # Update our indices to reflect the move
                bins[r] = dest
                r = dest 

    # Filter out the empty bins
    have = [ m for m in data if m ]
    print len(have), "groups in result"
    return have


def locatebin(bins, n):
    """
    Find the bin where list n has ended up: Follow bin references until
    we find a bin that has not moved.
    """
    while bins[n] != n:
        n = bins[n]
    return n
1
задан WISHY 25 July 2016 в 11:46
поделиться

1 ответ

NoClassDefFoundError

Брошено, если экземпляр виртуальной машины Java или экземпляр ClassLoader пытается загрузить в определении класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения), и определение класса не может быть найдено.

Вы должны использовать версию downgrade 9.0.0 вместо 9.2.1

compile 'com.google.android.gms:play-services:9.0.0'

И добавить multidex

compile 'com.android.support:multidex:1.0.1'

Надеемся на эту помощь.

2
ответ дан IntelliJ Amiya 15 August 2018 в 18:14
поделиться
  • 1
    9.2.1 также является стабильной версией. Скорее всего, у устройства просто нет версии Google Play Services, которая соответствует 9.2.1. – Frank van Puffelen 25 July 2016 в 15:43
  • 2
    @FrankvanPuffelen Действительно, действительно, сэр – IntelliJ Amiya 26 July 2016 в 05:02
Другие вопросы по тегам:

Похожие вопросы: