Questions tagged «language-agnostic»

将此标签用于独立于任何特定编程语言的编程问题。




30
设计一个堆栈,使getMinimum()应该为O(1)
这是面试问题之一。您需要设计一个包含整数值的堆栈,以便getMinimum()函数应返回堆栈中的最小元素。 例如:考虑以下示例 情况1 5->顶部 1个 4 6 2 调用getMinimum()时,它应返回1,这是最小元素 在堆栈中。 情况#2 stack.pop() stack.pop() 注意:5和1都从堆栈中弹出。所以之后,堆栈 好像, 4->顶部 6 2 调用getMinimum()时应返回2,这是 堆栈。 食用者: getMinimum应该返回O(1)中的最小值 在设计时还必须考虑空间约束,如果使用额外的空间,则它应该是恒定的空间。

6
最佳的犹太趾甲切割算法是什么?
我正在为会自动修剪脚趾甲的机器开发软件,以便用户可以简单地将脚放进去并运行它,而不必通过咬伤或使用指甲钳手动进行操作。 我们潜在用户群中有很大一部分可能是犹太人,而且很明显,有一种传统是不按顺序修剪脚趾甲(或指甲) 对于这种传统的确切应用,似乎存在不同意见,但是我们认为以下规则足以容纳宗教信仰禁止按趾甲切割的人: 不应连续切割两个相邻的脚趾甲 左脚的切割顺序应与右脚的切割顺序不匹配 连续两次切割的切割顺序不应相同。序列不应该容易预测,因此对交替序列进行硬编码是行不通的。 这就是我们决定给脚趾编号的方式: 5 4 3 2 1 1 2 3 4 5 Left foot Right foot 我已经编写了代码来解决该问题,但是所使用的算法不是最优的:实际上,最坏的情况是O(∞)。它的工作方式可与bogosort媲美。这是使用的实际代码的伪代码简化: function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function GetToenailCuttingOrder while (true) sequence = GenerateRandomSequence() if (!AllItemsAreUnique(sequence)) continue if (NoTwoAdjacentItemsHaveConsecutiveNumbers(sequence)) return sequence …

17
TDD与单元测试[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我的公司对单元测试我们的代码还很陌生。我已经阅读了一段时间的TDD和单元测试,并深信它们的价值。我试图说服我们的团队,TDD值得学习和改变关于编程方式的思维方式,但这是一个挣扎。这使我想到了我的问题。 TDD社区中有很多人对编写测试然后编写代码非常虔诚(我和他们在一起),但是对于一个在TDD中苦苦挣扎的团队来说,妥协仍然带来更多的好处吗? 一旦编写了代码(也许是检入代码的要求),我也许可以成功地使团队编写单元测试,并且我的假设是编写这些单元测试仍然有价值。 使陷入困境的团队加入TDD的最佳方法是什么?失败的是,即使在编写代码之后,仍然值得编写单元测试吗? 编辑 我摆脱的是,对于我们而言,在编码过程中的某个位置开始单元测试非常重要。对于团队中支持此概念的人员,应开始朝着TDD进行更多测试并首先进行测试。感谢大家的投入。 跟进 我们最近开始了一个新的小型项目,并且团队的一小部分使用了TDD,其余的在代码之后编写了单元测试。在结束了项目的编码部分之后,那些编写了代码之后的单元测试的人惊讶地发现TDD编码器已经完成并且具有更可靠的代码。这是赢得怀疑者的好方法。我们仍然有很多成长的烦恼,但是意志之战似乎已经结束。感谢所有提供建议的人!

9
为什么无法使用正则表达式解析HTML / XML:用外行的术语进行的正式解释
SO的日子一天天过去,毫无疑问地需要使用正则表达式来解析(X)HTML或XML。 虽然相对容易找到一些例子来说明正则表达式在该任务中不可行,或者用一些表达该概念的表达式,但我仍然无法在正式的解释中找到为什么不能在外行人家中做这件事的正式解释。条款。 到目前为止,我在该站点上唯一能找到的正式解释可能是非常准确的,但对于自学成才的程序员也很神秘: 这里的缺点是HTML是Chomsky Type 2语法(无上下文语法),RegEx是Chomsky Type 3语法(正则表达式) 要么: 正则表达式只能匹配正则语言,而HTML是无上下文的语言。 要么: 有限自动机(它是正则表达式基础的数据结构)除了处于其所在的状态外没有其他内存,如果您具有任意深度的嵌套,则需要一个任意大的自动机,它会与有限自动机的概念相冲突。 要么: 常规语言的Pumping引理是您不能这样做的原因。 [公平地说:以上解释的大部分都链接到Wikipedia页面,但是这些答案比答案本身更容易理解]。 因此,我的问题是:有人可以用外行的形式对上述为什么不能使用正则表达式解析(X)HTML / XML的正式解释进行翻译吗? 编辑:阅读完第一个答案后,我认为我应该澄清一下:我正在寻找一种“翻译”,它也简要地解释了它试图翻译的概念:在回答的最后,读者应该有一个大概的想法-例如-“常规语言”和“无上下文语法”的含义是什么...

16
图算法查找两个任意顶点之间的所有连接
我正在尝试确定最佳的时间效率算法来完成下面描述的任务。 我有一套记录。对于这组记录,我具有连接数据,该数据指示该组记录中的记录对如何相互连接。这基本上表示一个无向图,其中记录是顶点,而连接数据是边。 集合中的所有记录都具有连接信息(即不存在孤立记录;集合中的每个记录都连接到集合中的一个或多个其他记录)。 我想从集合中选择任意两个记录,并能够显示所选记录之间的所有简单路径。“简单路径”是指在路径中没有重复记录的路径(即仅有限路径)。 注意:所选的两个记录将始终是不同的(即开始和结束顶点永远不会相同;没有周期)。 例如: 如果我有以下记录: A,B,C,D,E 并且以下表示连接: (A,B),(A,C),(B,A),(B,D),(B,E),(B,F),(C,A),(C,E), (C,F),(D,B),(E,C),(E,F),(F,B),(F,C),(F,E) [其中(A,B)表示记录A连接到记录B] 如果我选择B作为我的开始记录,选择E作为我的结束记录,则我想找到所有通过记录连接将记录B连接到记录E的简单路径。 将B连接到E的所有路径: B→E B-> F-> E B-> F-> C-> E B-> A-> C-> E B-> A-> C-> F-> E 这是一个例子,实际上我可能有包含数十万条记录的集合。

22
异常或错误代码约定
昨天,我与同事就首选的错误报告方法进行了激烈的辩论。主要是我们正在讨论使用异常或错误代码来报告应用程序层或模块之间的错误。 您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?

18
了解递归函数如何工作
正如标题所解释的那样,我有一个非常基本的编程问题,但我现在还无法理解。过滤掉所有(极其聪明的)“为了理解递归,您必须首先理解递归。” 来自各种在线话题的回复我还是不太明白。 了解到,当面对不知道的知识时,我们可能会提出错误的问题或错误地提出正确的问题,我会分享我“认为”的问题,希望有相貌相似的人可以分享一些一点知识,将有助于为我打开递归灯泡! 这是函数(语法用Swift编写): func sumInts(a: Int, b: Int) -> Int { if (a > b) { return 0 } else { return a + sumInts(a: a + 1, b: b) } } 我们将使用2和5作为我们的参数: println(sumInts(a: 2, b: 5)) 显然答案是14。但是我不清楚如何实现这一价值。 这些是我的2个挂断电话: 递归调用该函数,直到满足条件为止。该条件是a> b。满足此条件后,返回0。乍一看,我希望返回值为0,这显然是不正确的。 在每次迭代中打印出'a'的值会产生一个我期望的值:2、3、4、5(此时5 + 1> b满足第一个条件:a> b),但我仍然不知道看一下如何达到14的值。 我首先想到的是,与以下类似的事情正在神奇地发生: var answer …

12
哈希码和校验和-有什么区别?
我的理解是,哈希码和校验和是类似的东西-为数据块计算的数值是相对唯一的。 即,两个数据块产生相同的数字哈希/校验和值的概率足够低,因此可以出于应用目的而忽略。 那么,对于同一件事,我们是否有两个词,或者哈希码和校验和之间是否存在重要区别?



8
哈希表真的可以是O(1)吗?
哈希表可以实现O(1)似乎是常识,但是这对我来说从来没有任何意义。有人可以解释一下吗?这是两种情况: 答: 该值是一个小于哈希表大小的整数。因此,该值是其自己的哈希,因此没有哈希表。但是,如果有的话,它将是O(1),但效率仍然很低。 B. 您必须计算值的哈希值。在这种情况下,对于要查找的数据大小,顺序为O(n)。在您完成O(n)工作后,查找可能是O(1),但在我眼里仍然是O(n)。 而且,除非您拥有完美的哈希表或大型哈希表,否则每个存储桶中可能有几项。因此,无论如何它会演变成小的线性搜索。 我认为哈希表很棒,但除非得到理论上的支持,否则我不会获得O(1)的名称。 Wikipedia的有关哈希表的文章始终引用恒定的查找时间,并且完全忽略了哈希函数的成本。这真的是公平的措施吗? 编辑:总结一下我学到的东西: 从技术上讲,这是正确的,因为不需要散列函数使用键中的所有信息,因此可以是恒定时间,并且因为足够大的表可以使冲突降低到接近恒定时间。 在实践中确实如此,因为随着时间的推移,只要选择哈希函数和表大小以最大程度地减少冲突,就可以解决问题,尽管这通常意味着不使用恒定时间哈希函数。

15
在什么情况下链表有用?
在大多数情况下,我看到人们尝试使用链接列表,在我看来,这是一个糟糕的选择。探索链表是否是数据结构的好选择的环境可能会很有用。 理想情况下,答案应阐明选择数据结构时使用的标准,以及在特定情况下哪种数据结构最有效。 编辑:我必须说,不仅数字,而且答案的质量给我留下了深刻的印象。我只能接受一个,但是如果还没有更好的东西的话,我还要说另外两三个。只有一对夫妇(尤其是我最终接受的一对夫妇)指出了链表提供真正优势的情况。我确实认为,史蒂夫·杰索普(Steve Jessop)不仅提出了一个答案,而且提出了三个不同的答案,因此值得得到荣誉奖,我发现所有这些都给人留下了深刻的印象。当然,即使发布的内容仅是评论而不是答案,我认为尼尔的博客条目也很值得阅读-不仅内容丰富,而且也很有趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.