Как вы можете видеть в других ответах, большинство алгоритмов объединяются со специальной структурой данных. Например, для несортированного списка интервалов в качестве входных данных O(n)
лучше всего получить. (И, как правило, легче думать в терминах структуры данных, которая диктует алгоритм).
В этом случае ваш вопрос не является полным:
Например, если вам нужно выполнить только один такой поиск, тогда не стоит сортировать список раньше. Если бы было много, то более дорогостоящая сортировка или генерация «1D quadtree» была бы амортизирована.
Однако ее было бы трудно решить, потому что простая квадтрия (как я ее понимаю) способна просто для обнаружения столкновения, но он не может создать список всех сегментов, которые перекрываются с вашим входом.
Одной простой реализацией будет упорядоченный (по согласованию) список, в который вы вставляете все концы сегмента с началом / окончанием флага и с номером сегмента. Таким образом, анализируя его (еще O (n), но я сомневаюсь, что вы можете сделать это быстрее, если вам также нужен список всех сегментов, которые перекрываются) и сохранение трека всех открытых сегментов, которые не были закрыты при " контрольные точки ".
основано на Что нового в EF Core 2.0 - EF Core | Документы Microsoft
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MCContext >(
options => options.UseSqlServer(connectionString));
}
, тогда вы можете
public class TiketsController : ControllerBase
{
private readonly MCContext _context;
public TiketsController (MCContext context)
{
_context = context;
}
}
Базовый шаблон для использование EF Core в приложении ASP.NET Core обычно включает в себя регистрацию пользовательского типа DbContext в системе внедрения зависимостей и последующее получение экземпляров этого типа через параметры конструктора в контроллерах. Это означает, что для каждого запроса создается новый экземпляр DbContext.
blockquote>, но если вам требуется высокая производительность / безопасное повторное использование: AddDbContextPool
public void ConfigureServices(IServiceCollection services) { services.AddDbContextPool<MCContext >( options => options.UseSqlServer(connectionString)); }
, тогда вы можете
public class TiketsController : ControllerBase { private readonly MCContext _context; public TiketsController (MCContext context) { _context = context; } }
Если этот метод используется, на Когда контроллер запрашивает экземпляр DbContext, мы сначала проверим, есть ли экземпляр в пуле. Как только обработка запроса завершается, любое состояние в экземпляре сбрасывается, и сам экземпляр возвращается в пул.
BLOCKQUOTE>