Tag: 数据结构

你如何validation二叉search树?

我在这里阅读了一个被称为validation二叉search树的访谈练习。 这个工作到底如何? 在validation二叉search树时会寻找什么? 我写了一个基本的search树,但从来没有听说过这个概念。

devise一个堆栈,使getMinimum()应该是O(1)

这是面试问题之一。 您需要devise一个包含整数值的堆栈,以便getMinimum()函数返回堆栈中的最小元素。 例如:考虑下面的例子 情况1 5 – > TOP 1 4 6 2 当调用getMinimum()时,它应该返回1,这是最小的元素 在堆栈中。 情况#2 stack.pop() stack.pop() 注:5和1都从堆栈中移出。 所以在这之后,堆栈 好像, 4 – > TOP 6 2 当getMinimum()被调用时,应该返回2,这是最小的 叠加。 制约性: getMinimum应返回O(1)中的最小值 在devise时还必须考虑空间约束,如果使用额外的空间,则空间应该是恒定的。

如何使用多个实体绑定来设置ElasticSearch索引结构

最近我开始将ElasticSearch(ES)实现工作应用到使用MySQL编写的使用PHP编写的传统电子商务应用程序中。 我对所有这些东西都是全新的,阅读文档是好的,但我真的需要有经验的人来指导我。 从ES文档中我可以build立一个新的集群,我也发现河stream已经被废弃了,应该被replace,所以我用Logstash和JDBC MySQL连接器replace了它们。 在这一点上我有: ElasticSearch Logstash JDBC MySQL驱动程序 MySQL服务器 应用程序的数据库结构并不是最优的,很难replace,但我想以最好的方式将其复制到ES索引中。 数据库结构: 制品 +——————————-+——-+——–+ | Id | Title | Price | +——————————-+——-+——–+ | 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 | | 018357657529fef056cf396626812 | Beta | 355,00 | | 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00 | +——————————-+——-+——–+ 旗 +————+————-+ | Id | Title | +————+————-+ | sellout | […]

C ++结构语法“a:b”是什么意思

如果我有一个C ++结构,定义一个64位数据字,如.. struct SMyDataWord { int Name : 40; int Colour : 24; }; : 40语法是什么意思…是否意味着前40位是为名称保留的,其余的24位是彩色的? 这似乎是如何使用,但我以前没有遇到过。

我怎样才能从一个方法返回一个匿名types?

我有一个Linq查询,我想从多个地方调用: var myData = from a in db.MyTable where a.MyValue == "A" select new { a.Key, a.MyValue }; 我怎样才能创build一个方法,把这个代码放在里面,然后调用它呢? public ??? GetSomeData() { // my Linq query }

迭代vector,去掉某些项目

我有一个std ::向量m_vPaths; 我将迭代这个向量,并随时调用:: DeleteFile(strPath)。 如果我成功删除了文件,我会从vector中删除它。 我的问题是我可以绕过不得不使用两个向量? 有不同的数据结构可能更适合我需要做的吗? 例如:使用迭代器几乎做我想要的,但问题是一旦你使用迭代器擦除,所有迭代器变得无效。 std::vector<std::string> iter = m_vPaths.begin(); for( ; iter != m_vPaths.end(); iter++) { std::string strPath = *iter; if(::DeleteFile(strPath.c_str())) { m_vPaths.erase(iter); //Now my interators are invalid because I used erase, //but I want to continue deleteing the files remaining in my vector. } } 我可以使用两个向量,我将不再有问题,但有没有更好,更有效的方法来做我想做的事情? 顺便说一句,因为目前还不清楚,m_vPaths是这样宣布(在我的class级): std::vector<std::string> m_vPaths;

链接列表在什么情况下有用?

大多数时候,我看到人们尝试使用链表,在我看来,像一个穷人(或非常贫穷)的select。 也许探索一个链表是不是数据结构的好select的情况是有用的。 理想情况下,答案将阐述在select数据结构时使用的标准,以及在特定情况下哪些数据结构可能工作得最好。 编辑:我必须说,不仅数量,而且答案的质量都令我印象深刻。 我只能接受一个,但如果事情好一些的话,还有两三个我不得不说的是值得接受的。 只有一对(尤其是我最终接受的那个)指出了链接列表提供了真正优势的情况。 我认为,史蒂夫·杰索普(Steve Jessop)应该得到某种荣誉提名,不仅提出了一个,而且提出了三个不同的答案,所有这些都给我留下了深刻的印象。 当然,即使它仅作为评论发布,并不是一个答案,但我认为尼尔的博客作品也非常值得一读 – 不仅仅是内容丰富,而且相当有趣。

加载骰子的数据结构?

假设我有一个n边加载的模子,当我滚动它时,每个边k有一些概率pk 。 我很好奇,如果有一个很好的algorithm来静态存储这个信息(即对于一组固定的概率),这样我就可以高效地模拟一个随机掷骰子。 目前,我有一个O(LG)的解决scheme,这个问题。 这个想法是为所有k存储一个前k个边的累积概率表,它们在[0,1)范围内产生一个随机实数,然后在表上进行二分search,得到最大的累积索引值不大于选定的值。 我更喜欢这个解决scheme,但运行时不考虑概率似乎很奇怪。 特别是在极端情况下,一方面总是出现或者价值是均匀分布的,可能使用一种简单的方法在O(1)中生成滚动的结果,尽pipe我的解决scheme仍然需要对数很多的步骤。 有没有人有任何build议,如何解决这个问题的方式是在某种程度上“适应”在运行时? 编辑 :基于这个问题的答案,我写了一篇文章,描述了这个问题的许多方法 ,以及他们的分析。 它看起来像Vose的别名方法的实施给予Θ(n)预处理时间和O(1)时间每个die roll,这真是令人印象深刻。 希望这是对答案中包含的信息的有益补充!

匹配string数组中的值

问题:寻找一种更有效的方法来查找在1d数组中是否存在精确的匹配值 – 本质上是一个布尔值true/false 。 我可以忽略明显的东西吗? 或者我只是使用错误的数据结构,通过使用数组时,我可能应该使用集合对象或字典? 在后者中,我可以分别检查.Contains或.Exists方法 在Excel中,我可以检查vector数组中的值,如: If Not IsError(Application.Match(strSearch, varToSearch, False)) Then ' Do stuff End If 这将返回一个完全匹配的索引,显然受到Match函数的限制,它只能在这个上下文中find第一个匹配的值。 这是一种常用的方法,也是我长期以来使用的方法。 这对于Excel来说足够满意 – 但其他应用程序呢? 在其他应用程序中,我可以做基本相同的事情,但需要启用Excel对象库的引用,然后: If Not IsError(Excel.Application.match(…)) 这似乎很愚蠢,而且由于权限/信任中心/等原因很难在分布式文件上pipe理。 我曾尝试使用Filter()函数: If Not Ubound(Filter(varToSearch, strSearch)) = -1 Then 'do stuff End If 但是这个方法的问题是Filter返回一个部分匹配的数组,而不是一个完全匹配的数组。 (我不知道为什么这将是有用的返回子string/部分匹配。) 另一种方法是从字面上遍历数组中的每个值(这也是我认为非常常用的) – 这看起来比调用Excel的Match函数更加不必要的繁琐。 For each v in vArray If v = strSearch […]

在android中的活动之间传递非原始types的数据

假设你想开始一个新的活动,并从当前活动传递一些数据。 如果数据是原始types的,你可以简单地使用intent并添加额外的内容,但是如何处理更复杂的数据结构(如数组列表或对象)呢?