相关疑难解决方法(0)

范围交叉算法优于O(n)?

范围交叉是一个简单但非平凡的问题.

已经回答了两次:

第一个解决方案是O(n),第二个解决方案是数据库(当然小于O(n)).

我有同样的问题,但对于一个大的n,我不在数据库中.

这个问题似乎与存储2D点非常相似,可以快速检索矩形内的那些,但我看不到它是如何映射的.

那么你将数据结构存储在哪个数据结构中,以便搜索范围的成本低于O(n)?(使用可用于Java的库的额外功劳)

编辑:

我想获得所有相交范围的子集,这意味着搜索范围可以与多个范围相交.

Java中需要小于O(n)的方法是:

public class RangeSet {
    ....
    public Set<Range> intersects(Range range);
    ....
}
Run Code Online (Sandbox Code Playgroud)

其中Range只是一个包含一对int start和end的类.

这不是一个不可能的问题,我已经有了解决方案,我只是想看看是否有更标准/更简单的方法

java algorithm big-o search interval-intersection

24
推荐指数
3
解决办法
2万
查看次数

继承List <T>来实现集合是个坏主意吗?

我曾经读过Imaar Spaanjars关于如何构建3层应用程序的文章.(http://imar.spaanjaars.com/416/building-layered-web-applications-with-microsoft-aspnet-20-part-1)这已成为我编码的基础.

因此,我通过继承a来实现集合List<T>.因此,如果我有一个名为Employee的类,要实现一个集合,我还将有一个Employees类,如下所示.

class Employee
{
   int EmpID {get;set;}
   string EmpName {get;set;}  

}

class Employees : List<Employee>
{
   public Employees(){}
}
Run Code Online (Sandbox Code Playgroud)

我从来没有真正质疑这一点,因为它为我做了工作.但是现在我开始尝试一些事情,我不确定这是否是正确的方法.

例如,如果我想从Employees获得一个子集,例如

 Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

这会抛出System.InvalidCastException.但是,如果我使用以下内容则没有问题.

List<Employee> newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

那么我该如何实现Employees以便我不必List<Employee>在DAL或BLL中明确使用?或者我怎么摆脱InvalidCastexception?

c# collections list

12
推荐指数
2
解决办法
9357
查看次数

标签 统计

algorithm ×1

big-o ×1

c# ×1

collections ×1

interval-intersection ×1

java ×1

list ×1

search ×1