Tag: 语言不可知的

有效地颠倒字符数组中字(不是字符)的顺序

给定一组形成一个单词的字符,给出一个有效的algorithm来颠倒单词的顺序(不是字符)。 示例input和输出: >>> reverse_words("this is a string") 'string a is this' 它应该是O(N)时间和O(1)空间( split()和推/popup堆栈是不允许的)。 拼图从这里被拿走。

为什么在C#中不允许const参数?

对C ++开发人员来说,这看起来很奇怪。 在C ++中,我们用一个参数标记为const ,以确保它的状态不会在方法中改变。 还有其他C ++特定的原因,比如传递const ref以便通过ref传递,并确保状态不会被改变。 但为什么我们不能在C#中标记为方法参数const? 为什么我不能像以下声明我的方法? …. static void TestMethod1(const MyClass val) {} …. static void TestMethod2(const int val) {} ….

为什么使用inheritance?

我知道这个问题以前已经讨论过了 ,但是总是认为inheritance至less有时比组合更好。 我想挑战这个假设,希望得到一些理解。 我的问题是这样的: 因为你可以完成任何东西与对象组成,你可以用古典inheritance,因为古典inheritance经常被滥用[1] ,因为对象组成给你灵活地改变委托对象的运行时, 为什么你会用古典inheritance? 我可以理解为什么你会推荐一些像Java和C ++这样的语言来inheritance,这些语言没有提供方便的委托语法。 在这些语言中,只要不明显不正确,就可以使用inheritance来节省大量的input。 但是像Objective C和Ruby这样的其他语言既可以提供经典的inheritance,也可以为委派提供非常方便的语法。 Go编程语言是我所知的唯一的语言决定古典inheritance是比它的价值更麻烦,并且只支持委托代码重用。 另一种表述我的问题的方法是:即使你知道古典inheritance不是不正确的实现一个特定的模型,是否有足够的理由来使用它,而不是组成? [1]许多人使用经典的inheritance来实现多态,而不是让他们的类实现一个接口。 inheritance的目的是代码重用,而不是多态。 此外,有些人使用inheritance来模拟他们对“一个”的关系的直观理解,这个关系往往是有问题的 。 更新 我只是想澄清我的意思,当我谈论inheritance: 我正在谈论一种类inheritance,从一个部分或完全实现的基类inheritance 。 我并不是在谈论从一个纯粹的抽象基类inheritance,这个基类和实现一个接口是一样的,而我所logging的这个接口并不是反对的。 更新2 我知道inheritance是实现C ++多态性的唯一方法。 在这种情况下,很显然你必须使用它。 所以我的问题仅限于诸如Java或Ruby之类的语言,它们提供了实现多态的独特方法(分别为接口和鸭子打字)。

缓冲与非缓冲IO

我了解到,默认情况下,程序中的I / O被缓冲,即它们从临时存储器被提供给请求程序。 我明白,缓冲提高了IO性能(也许通过减less系统调用)。 我见过禁用缓冲的例子,例如C中的setvbuf 。这两种模式之间的区别是什么?什么时候应该使用另一种模式?

我应该什么时候嘲笑?

我对假冒和伪造物品有一个基本的了解,但是我不确定自己有什么时间/在哪里使用嘲弄的感觉 – 特别是因为它适用于这种场景。

Type和Class有什么区别?

是什么使得一个类与class不同,反之亦然? (在一般的语言不可知的意义上)

有没有人实际上实现了Fibonacci-Heap?

有没有人实施过斐波纳契堆 ? 我几年前就这样做了,但比使用基于arrays的BinHeaps慢了几个数量级。 那时候,我认为这是一个很有价值的教训,就是研究并不总是像自称的那么好。 然而,很多研究论文都是基于使用Fibonacci-Heapalgorithm的运算时间。 你有没有设法产生一个有效的实施? 还是你使用的数据集太大,斐波那契堆更有效率? 如果是这样,一些细节将不胜感激。

foreach和map有区别吗?

好吧,这是一个计算机科学问题,而不是一个基于特定语言的问题,但是地图操作和foreach操作之间有什么区别吗? 或者他们只是同一个事物的不同名称?

跳过列表与二进制树

我最近遇到了称为跳过列表的数据结构。 他们似乎有非常相似的行为二叉search树…我的问题是 – 为什么你会想在二叉search树上使用跳过列表?

什么是较less的已知但有用的数据结构?

有一些数据结构是非常有用的,但大多数程序员都不知道。 他们是哪一个? 每个人都知道链表,二叉树和散列,但跳过列表和布隆filter例如。 我想知道更多不太常见的数据结构,但值得了解,因为它们依赖于伟大的想法并丰富了程序员的工具箱。 PS:我也喜欢跳舞链接这样的技巧,这些技巧巧妙地使用了一个通用数据结构的属性。 编辑 :请尝试包括更详细的描述数据结构的页面的链接 。 另外,为了说明为什么数据结构很酷,尝试添加几个字(正如JonasKölker指出的那样)。 另外,尝试为每个答案提供一个数据结构 。 这将允许更好的数据结构根据他们的选票浮动到顶部。